if exp: pass 數(shù)據(jù)類型檢查函數(shù),isinstance()函數(shù)返回多個值,其實是返回一個tuple,在語法上,返回一個tuple可以省略括號,而多個變量可以同時接收一個tuple,按位置賦給對應(yīng)的值。默認(rèn)參數(shù),調(diào)用power(5)時,相當(dāng)于調(diào)用power(5,2)。設(shè)置默認(rèn)參數(shù)時,必選參數(shù)在前,默認(rèn)參數(shù)在后。當(dāng)函數(shù)有多個參數(shù)時,把變化大的參數(shù)放前面,變化小的參數(shù)放后面,變化小的參數(shù)就可以作為默認(rèn)參數(shù)。默認(rèn)參數(shù)必須指向不變對象
def power(x,n=2): passdef add_end(L=[]): L.append('END') return L # 每次調(diào)用該函數(shù),如果改變了L的內(nèi)容,下次調(diào)用時,默認(rèn)參數(shù)的內(nèi)容變了,不再是函數(shù)定義時的[]。def add_end(L=None): if L is None: L = [] L.append('END') return L # 修改為用None這個不變對象可變參數(shù),允許傳入0個或任意個參數(shù),在函數(shù)調(diào)用時自動組裝為一個tuple。
def calc(numbers): sum = 0 for n in numbers: sum = sum + n * n return sum # 定義list或tuple參數(shù),把參數(shù)a,b,c……作為一個list或tuple傳進(jìn)來def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum # 定義可變參數(shù),在參數(shù)前面加一個*號,在函數(shù)內(nèi)部,參數(shù)numbers接收到一個tuple # 如果已經(jīng)有一個list或tuple,如nums=[1,2],可以用calc(*nums) # *nums表示把nums這個list的所有元素作為可變參數(shù)傳進(jìn)去關(guān)鍵字參數(shù),在參數(shù)前面加**,允許傳入0個或任意個含參數(shù)名的參數(shù),在函數(shù)內(nèi)部自動組裝為一個dict。
<<< def person(name,age,**kw): 命名關(guān)鍵字參數(shù),命名關(guān)鍵字參數(shù)調(diào)用必須傳入?yún)?shù)名,這和位置參數(shù)不同。命名關(guān)鍵字參數(shù)可以有缺省值。def person(name,age,*,city,job): print(name,age,city,job) # 命名關(guān)鍵字參數(shù)需要一個特殊分隔符*,*后面的參數(shù)被視為命名關(guān)鍵字參數(shù)。def person(name,age,*args,city,job): print(name,age,args,city,job) # 如果函數(shù)定義中已經(jīng)有了一個可變參數(shù),后面跟著的命名關(guān)鍵字參數(shù)不需要*了。*args是可變參數(shù),args接收的是一個tuple。**kw是關(guān)鍵字參數(shù),kw接收的是一個dict。可變參數(shù)既可以直接傳入:func(1,2,3),又可以先組裝list或tuple,再通過*args傳入:func(*(1,2,3))。關(guān)鍵字參數(shù)既可以直接傳入func(a=1,b=2),又可以先組裝dict,再通過**kw傳入:func(**{'a':1,'b':2})命名關(guān)鍵字參數(shù)是為了限制調(diào)用者可以傳入的參數(shù)名,同時可以提供默認(rèn)值。定義命名的關(guān)鍵字參數(shù)在沒有可變參數(shù)的情況下不要忘了寫分隔符*,否則定義的將是位置參數(shù)。新聞熱點
疑難解答