Python函数细节:多数量参数、强制参数传递、返回多值、匿名/内联函数
1. 可接受任意數(shù)量參數(shù)的函數(shù)
- 接受任意數(shù)量的位置參數(shù),使用參數(shù)*來(lái)解決
rest是由所有其他位置參數(shù)組成的元組。在代碼中把它當(dāng)成了一個(gè)序列來(lái)進(jìn)行后續(xù)的計(jì)算。
- 接受任意數(shù)量的關(guān)鍵字參數(shù),使用參數(shù)**解決
2. 只接受關(guān)鍵字參數(shù)的函數(shù)
將強(qiáng)制關(guān)鍵字參數(shù)放到某個(gè)*參數(shù)或者單個(gè)*后面就能達(dá)到這種效果。
def minimum(*values, clip=None):m = min(values)if clip is not None:m = clip if clip > m else mreturn mprint( minimum(1, 5, 2, -5, 10) ) # >>> -5 print( minimum(1, 5, 2, -5, 10, clip=0) ) # >>> 0很多情況下,使用強(qiáng)制關(guān)鍵字參數(shù)會(huì)比使用位置參數(shù)表意更加清晰,程序也更加具有可讀性。
3. 返回多值的函數(shù)
為了能返回多個(gè)值,函數(shù)直接return一個(gè)元組就行了,需要了解到的是,這里是通過(guò)','來(lái)構(gòu)造一個(gè)元組,元組與多個(gè)返回臨時(shí)變量對(duì)齊的過(guò)程可以借助元組解包理解。
def myfun():return 1, 2, 3a,b,c = myfun() print(a, b, c) # >>> a,b,c print(myfun()) # >>> (1, 2, 3)盡管myfun()看上去返回了多個(gè)值,實(shí)際上是先創(chuàng)建了一個(gè)元組然后返回的。 這個(gè)語(yǔ)法看上去比較奇怪,實(shí)際上使用的是逗號(hào)來(lái)生成一個(gè)元組,而不是用括號(hào)。當(dāng)調(diào)用返回一個(gè)元組的函數(shù)的時(shí)候 ,通常會(huì)將結(jié)果賦值給多個(gè)變量,就像上面的那樣。
4. 定義匿名或者內(nèi)聯(lián)函數(shù)
當(dāng)一個(gè)函數(shù)非常短的時(shí)候,我們沒(méi)有必要使用def去定義一個(gè)函數(shù),這時(shí)候可以通過(guò)內(nèi)聯(lián)函數(shù)形式進(jìn)行定義(lambda表達(dá)式)。
# 這種內(nèi)聯(lián)函數(shù)的表達(dá)形式和定義的函數(shù)形式是一樣的 # def add(x, y): # return x+y add = lambda x, y : x+y print( add(2, 3) ) # >>> 5 print( add('hello', 'world')) # >>> helloworld需要注意的是:盡管lambda表達(dá)式允許定義簡(jiǎn)單函數(shù),但是它的使用是有限制的。 我們只能指定單個(gè)表達(dá)式,不能包含其他的語(yǔ)言特性(如多個(gè)語(yǔ)句、條件表達(dá)式、迭代以及異常處理等)。
博文參考《python3-cookbook》
總結(jié)
以上是生活随笔為你收集整理的Python函数细节:多数量参数、强制参数传递、返回多值、匿名/内联函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 优秀行业网站建设5必备(上)
- 下一篇: Python类与对象技巧(1):字符串格