函數的基本結構
Python中的函數基本結構:
代碼如下:
def 函數名([參數列表]):
語句
幾點說明:
•函數名的命名規則要符合python中的命名要求。一般用小寫字母和單下劃線、數字等組合
•def是函數的開始,這個簡寫來自英文單詞define,顯然,就是要定義一個什么東西
•函數名后面是圓括號,括號里面,可以有參數列表,也可以沒有參數
•千萬不要忘記了括號后面的冒號
•語句,相對于def縮進,按照python習慣,縮進四個空格
看簡單例子,深入理解上面的要點:
代碼如下:
>>> def name(): #定義一個無參數的函數,只是通過這個函數打印
... print "qiwsir" #縮進4個空格
...
>>> name() #調用函數,打印結果
qiwsir
>>> def add(x,y): #定義一個非常簡單的函數
... return x+y #縮進4個空格
...
>>> add(2,3) #通過函數,計算2+3
5
注意上面的add(x,y)函數,在這個函數中,沒有特別規定參數x,y的類型。其實,這句話本身就是錯的,還記得在前面已經多次提到,在python中,變量無類型,只有對象才有類型,這句話應該說成:x,y并沒有嚴格規定其所引用的對象類型。
為什么?列位不要忘記了,這里的所謂參數,跟前面說的變量,本質上是一回事。python中不需要提前聲明變量,有的語言就需要聲明。只有當用到該變量的時候,才建立變量與對象的對應關系,否則,關系不建立。而對象才有不同的類型。那么,在add(x,y)函數中,x,y在引用對象之前,是完全自由的,也就是它們可以引用任何對象,只要后面的運算許可,如果后面的運算不許可,則會報錯。
代碼如下:
>>> add("qiw","sir") #這里,x="qiw",y="sir",讓函數計算x+y,也就是"qiw"+"sir"
'qiwsir'
>>> add("qiwsir",4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in add
TypeError: cannot concatenate 'str' and 'int' objects #仔細閱讀報錯信息,就明白錯誤之處了
從實驗結果中發現:x+y的意義完全取決于對象的類型。在python中,將這種依賴關系,稱之為多態。這是python和其它的靜態語言的重要區別。在python中,代碼不關心特定的數據類型。
新聞熱點
疑難解答