標(biāo)題包含的內(nèi)容夠多的吧?接下來我要教你“函數(shù)(function)”了!咚咚鏘!說到函數(shù),不一樣的人會(huì)對它有不一樣的理解和使用方法,不過我只會(huì)教你現(xiàn)在能用到的最簡單的使用方式。
函數(shù)可以做三樣事情:
你可以使用 def 新建函數(shù)。我將讓你創(chuàng)建四個(gè)不同的函數(shù),它們工作起來和你的腳本一樣。然后我會(huì)演示給你各個(gè)函數(shù)之間的關(guān)系。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # this one is like your scripts with argv
def print_two(*args):
arg1, arg2 = args
print "arg1: %r, arg2: %r" % (arg1, arg2)
# ok, that *args is actually pointless, we can just do this
def print_two_again(arg1, arg2):
print "arg1: %r, arg2: %r" % (arg1, arg2)
# this just takes one argument
def print_one(arg1):
print "arg1: %r" % arg1
# this one takes no arguments
def print_none():
print "I got nothin'."
print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()
|
讓我們把你一個(gè)函數(shù) print_two 肢解一下,這個(gè)函數(shù)和你寫腳本的方式差不多,因此你看上去應(yīng)該會(huì)覺著比較眼熟:
函數(shù) print_two 的問題是:它并不是創(chuàng)建函數(shù)最簡單的方法。在 Python 函數(shù)中我們可以跳過整個(gè)參數(shù)解包的過程,直接使用 () 里邊的名稱作為變量名。這就是 print_two_again 實(shí)現(xiàn)的功能。
接下來的例子是 print_one ,它向你演示了函數(shù)如何接受單個(gè)參數(shù)。
最后一個(gè)例子是 print_none ,它向你演示了函數(shù)可以不接收任何參數(shù)。
Warning
如果你不太能看懂上面的內(nèi)容也別氣餒。后面我們還有更多的練習(xí)向你展示如何創(chuàng)建和使用函數(shù)?,F(xiàn)在你只要把函數(shù)理解成“迷你腳本”就可以了。
運(yùn)行上面的腳本會(huì)看到如下結(jié)果:
$ python ex18.py
arg1: 'Zed', arg2: 'Shaw'
arg1: 'Zed', arg2: 'Shaw'
arg1: 'First!'
I got nothin'.
$
你應(yīng)該已經(jīng)看出函數(shù)是怎樣工作的了。注意到函數(shù)的用法和你以前見過的 exists、 open,以及別的“命令”有點(diǎn)類似了吧?其實(shí)我只是為了讓你容易理解才叫它們“命令”, 它們的本質(zhì)其實(shí)就是函數(shù)。也就是說,你也可以在自己的腳本中創(chuàng)建你自己的“命令”。
為自己寫一個(gè)函數(shù)注意事項(xiàng)以供后續(xù)參考。你可以寫在一個(gè)索引卡片上隨時(shí)閱讀,直到你記住所有的要點(diǎn)為止。注意事項(xiàng)如下:
當(dāng)你運(yùn)行(或者說“使用 use”或者“調(diào)用 call”)一個(gè)函數(shù)時(shí),記得檢查下面的要點(diǎn):
按照這兩份檢查表里的內(nèi)容檢查你的練習(xí),直到你不需要檢查表為止。
最后,將下面這句話閱讀幾遍:
“‘運(yùn)行函數(shù)(run)’、‘調(diào)用函數(shù)(call)’、和 ‘使用函數(shù)(use)’是同一個(gè)意思”