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