原文鏈接:http://learnpythonthehardway.org/book/ex18.html
大標題啊,對吧?下面我就要向你介紹關於函數的一些東西了。咚咚鏘!說到函數,每一個程序員會有有不一樣的理解和使用方法,但是現在在這裏我只會教給你最簡單的你能理解的東西。
函數通常做了三件事情:
1、它們給代碼段命名的方式就和“變量”給字符串和數值命名的方式一樣。
2、它們可以接受參數,就像你的腳本接受 “argv"一樣。
3、通過使用#1 和 #2 可以讓你創建一個”迷你腳本“或者”小命令“。
在Python 中你可以通過 def 關鍵字來創建一個函數。我打算讓你創建四個函數,它們的作用就像你的腳本一樣,然後我會向你展示這些參數之間的一些關聯。
#this one is like your script 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_on(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_on("First!")
print_none()
讓我們從第一個函數:print_two 開始入手,因爲它看起來和你已經知道創建的腳本很相似:
1、首先我們用 def 關鍵字來告訴 Python 我想要定義一個函數。
2、在 def 的同一行我們給函數命名了一個名稱。在這裏我們把它命名爲”print_two",但是你也可以將它命名爲“peanuts"。名稱可以任意,但是最好是簡短並且符合函數功能描述。
3、然後我們告訴函數我們需要 *args(asterisk args),這和腳本中的 argv 很相似。參數必須放在()圓括號中纔能有效。
4、接着我們用 : 冒號來結束這一行,並且在下一行縮進。
5、在冒號後面的所有行都進行了四個空格大小的縮進操作,縮進後將與print_two函數名開始的位置對齊。我們縮進的第一行中解析參數就和你腳本中解析參數的操作是一樣的。
6、爲了演示它的工作原理,我們將這些參數都打印出來,就像我們之前在腳本中做的類似。
現在在print_two函數中的問題就是沒有一種更簡單的方法來創建一個函數。在Ptyon中我們可以跳過所有解析參數的操作,只要直接使用在()中我們想要使用的變量名就可以了。print_two_again 函數就是這樣做的。
在這之後在名爲print_one的函數中向你展示瞭如何創建只有一個參數的函數的例子。
最後在名爲print_none的函數它向你演示了一個沒有參數的函數例子。
警告:
這個警告是非常重要的。如果你現在對這些還不能完全理解也不要泄氣。我們接下來將做更多關於函數的一些練習來教你如何來創建一個函數。現在你只要將我說的”函數“理解成”迷你腳本“就可以了。
輸出結果如下:
E:\>python ex18.py
arg1:'Zed' ,arg2:'Shaw'
arg1:'Zed' ,arg2:'Shaw'
arg1:'First!'
I got nothin'.
現在你明白一個函數是怎麼工作的了吧。注意到你使用函數的方式是不是很像之前使用 exists ,open 和其他“命令”的方式。實際上,我之前稱它們爲“命令”是爲了讓你更好的理解,在Python中它們就是函數。這就意味着你也可以自己來寫命令然後在腳本中使用它。