創(chuàng)建函數(shù)
def [函數(shù)名](函數(shù)參數(shù))
'''
函數(shù)文檔
'''
return 返回值
如果用戶想要讀取函數(shù)文檔,那么只需要輸入:
函數(shù)名__(雙下劃線)doc__(雙下劃線)
即可。例:
>>> def test(name): #name 就是一個形參
'''這是一個函數(shù)文檔'''
return 'Kiss%s' % (name)
>>> test('Thomas')#Thomas就是一個實參
'KissThomas'
>>> test.__doc__
'這是一個函數(shù)文檔'
>>> help(test)
Help on function test in module __main__:
test(name)
這是一個函數(shù)文檔
如以上代碼塊所示,“函數(shù)名.__doc__”可以顯示函數(shù)文檔。而help(函數(shù)名)也可以顯示函數(shù)的內(nèi)容,以及文檔。
不管是否涉及到跟他人協(xié)作,給函數(shù)添加正確的文檔是一個好習慣。
位置參數(shù)和關(guān)鍵字參數(shù)
位置參數(shù)就是定義函數(shù)的時候,直接把形參的名字放在那里的,就叫位置參數(shù)。
而關(guān)鍵字參數(shù)是指在定義函數(shù)的時候,用一個變量去指定具體的形參的情形。
例如,上一個例子中,test(name)就是一個位置參數(shù),而如果改成test(a='name'),那么name就變成了一個關(guān)鍵字參數(shù),關(guān)鍵字是a。
默認參數(shù)
默認參數(shù)就是當用戶沒有給它賦值的情況下,它就會返回默認值的一個參數(shù)。
# 在沒有默認參數(shù)的情況下,用戶使用函數(shù)時,少輸入了一個參數(shù),導(dǎo)致函數(shù)報錯
>>> def hanshu(name,behavior,noun):
return '%s%s了%s' % (name,behavior,noun)
>>> hanshu('張三','吃')
#Traceback (most recent call last):
#File "<pyshell#141>", line 1, in <module>
#hanshu('張三','吃')
#TypeError: hanshu() missing 1 required positional argument: 'noun'
>>> hanshu('張三','吃','蛋糕')
'張三吃了蛋糕'
>>>
#而當定義了默認參數(shù),用戶未輸入默認參數(shù)時,就會自動將默認參數(shù)補全,函數(shù)正常運行。
>>> def hanshu(name,behavior,noun='蛋糕'):
return '%s%s了%s' % (name,behavior,noun)
>>> hanshu('張三','玩弄')
'張三玩弄了蛋糕'
>>>
注意:如果存在默認參數(shù)和位置參數(shù),那么位置參數(shù)必須在默認參數(shù)的前面出現(xiàn)。否則會報錯??!
收集參數(shù)(可變參數(shù))
在這里“收集”不是一個動詞。當定義函數(shù)的人也不知道用戶到底可能要輸入多少個參數(shù)時,就需要用到收集參數(shù)。
收集參數(shù)用*+普通參數(shù)名 的方式來表示。
>>> def test(*params):
print('一共有%d個參數(shù)' % len(params))
print('第2個參數(shù)的值是:%s' % params[1])
>>> test('金','木','水','火','土')
一共有5個參數(shù)
第2個參數(shù)的值是:木
>>>
注意:如果可變參數(shù)后面還有其他的參數(shù),那么后面的參數(shù)只能使用關(guān)鍵字參數(shù),不能使用位置參數(shù)。因為如果使用了位置參數(shù),會被python當成前面一個可變參數(shù)的一部分。
*在形參中的作用是打包,而在實參的作用中則是解包。
>>> str = '上海自來水來自海上'
>>> print(str)
上海自來水來自海上
>>> print(*str)
上 海 自 來 水 來 自 海 上