定義
在Python中潭袱,函數(shù)如下定義:
def 函數(shù)名(參數(shù)1迫淹,參數(shù)2冀值,...,參數(shù)n):
函數(shù)體(語(yǔ)句塊)
幾點(diǎn)需要注意的:
1.函數(shù)的命名規(guī)則要符合Python中命名要求伟端,一般用小寫字母和下劃線、數(shù)字等組合
2.def是定義函數(shù)的關(guān)鍵詞夹厌,這個(gè)簡(jiǎn)寫來(lái)自英文單詞define
3.函數(shù)后面是hi圓括號(hào)豹爹,可以有參數(shù)列表,也可以沒有參數(shù)
4.括號(hào)后面的冒號(hào)不要忘記了
5.函數(shù)體(語(yǔ)句塊)矛纹,相對(duì)于def縮進(jìn)四個(gè)空格
例子:
>>> def name(): #定義一個(gè)無(wú)參數(shù)的函數(shù)臂聋,只是通過這個(gè)函數(shù)打印
... print "python function" #函數(shù)體,縮進(jìn)4個(gè)空格
...
>>> name() #調(diào)用函數(shù),打印結(jié)果
>>> def add(x,y): #定義一個(gè)加法函數(shù)
... return x+y #縮進(jìn)4個(gè)空格
...
>>> add(3,4) #通過函數(shù)計(jì)算3+4的和
>>> add("hello ","world")
'hello world'
>>>
從以上例子可以看出孩等,Python定義函數(shù)的時(shí)候艾君,變量是沒有明確類型的。因?yàn)樵赑ython中肄方,變量無(wú)類型冰垄,對(duì)象才有類型。在add(x,y)中权她,變量x虹茶,變量y,在引用對(duì)象之前隅要,是完全飄忽的蝴罪,沒有被貼在任何一個(gè)對(duì)象上,換句話說(shuō)他們有可能引用任何對(duì)象拾徙,只要后面的運(yùn)算許可洲炊,如果后面的運(yùn)算不許可感局,則會(huì)報(bào)錯(cuò)尼啡。
從以上結(jié)果發(fā)現(xiàn):x+y的意義完全取決于對(duì)象的類型。在Python中询微,這種依賴關(guān)系崖瞭,稱之為多態(tài)。記壮琶:Python中為對(duì)象編寫接口书聚,而不是為數(shù)據(jù)類型。
>>> result = add(4,6)
>>> result
10
add(x,y)在運(yùn)行之前藻雌,計(jì)算機(jī)內(nèi)是不存在的雌续,知道代碼運(yùn)行到這里的時(shí)候,在計(jì)算機(jī)中胯杭,就建立起來(lái)了一個(gè)對(duì)象驯杜,運(yùn)行add(x,y)之后,也就建立了一個(gè)add(x,y)對(duì)象做个,這個(gè)對(duì)象與變量result可以建立引用關(guān)系鸽心,并且add(x,y)將計(jì)算結(jié)果返回。于是通過result可以查看運(yùn)算結(jié)果居暖。
參數(shù)的默認(rèn)值
>>> def add_2(x,y=2):
... return x+y
...
>>> add_2(2)
4
>>> add_2(4,4)
8
>>> def add_3(x=3,y):
... return x+y
...
File "<stdin>", line 1
SyntaxError: non-default argument follows default argument
>>> def add_3(x=3,y=2):
... return x+y
...
>>> add_3() #x = 3 , y = 2
5
>>>add_3(6,6) #x = 6 , y = 6
12
>>> def add(x,y=1,z):
... return x+y+z
...
File "<stdin>", line 1
SyntaxError: non-default argument follows default argument
>>> def add(x,y=1,z=2):
... return x+y+z
...
>>> add(2) # x = 2 , y = 1 , z = 2
5
說(shuō)明:只要在形參表末尾的那些參數(shù)可以有默認(rèn)參數(shù)值顽频,即你不可以在聲明函數(shù)形參的時(shí)候,先聲明有默認(rèn)值的參數(shù)而后聲明沒有默認(rèn)值的參數(shù)太闺。這是因?yàn)橘x給形參的值都是根據(jù)位置而賦值的糯景。例如
def func(a,b = 1): #有效
def func(a = 1,b): #無(wú)效