python的可變參數
『壹』 python可變參數求和
在Python函數中,還可以定義可變參數。顧名思義,可變參數就是傳入的參數個數是可變的,可以是1個、2個到任意個,還可以是0個。
我們以數學題為例子,給定一組數字a,b,c……,請計算a^2 + b^2 + c^2 + ……。
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
定義可變參數和定義一個list或tuple參數相比,僅僅在參數前面加了一個*號。在函數內部,參數numbers接收到的是一個tuple,因此,函數代碼完全不變。但是,調用該函數時,可以傳入任意個參數,包括0個參數:
>>> calc(1, 2)
5
>>> calc()
0
『貳』 簡單談談Python中函數的可變參數
簡單談談Python中函數的可變參數
在Python中定義函數,可以用必選參數、默認參數、可變參數和關鍵字參數,這4種參數都可以一起使用,或者只用其中某些,但是請注意,參數定義的順序必須是:必選參數、默認參數、可變參數和關鍵字參數。
可變參數( * )
可變參數,顧名思義,它的參數是可變的,比如列表、字典等。如果我們需要函數處理可變數量參數的時候,就可以使用可變參數。
我們在查看很多Python源碼時,經常會看到 某函數(*參數1, **參數2)這樣的函數定義,這個*參數和**參數就是可變參數,一時會讓人有點費解。其實只要把函數可變參數的定義搞清楚了,就不難理解了。
當我們不知道需要用幾個參數來定義函數的時候,可變參數就可以大展手腳了。
在Python里,帶 * 的參數就是用來接受可變數量參數的。
如果一個函數定義如下:
def functionTest(*args):
....
....
....
調用時我們可以的這樣調用:
functionTest(1)
或者
functionTest(1,2)
或者
functionTest(1,2,3)
後面可以傳入多個參數。
看段實例代碼,觀察下*是怎麼具體應用的吧:
def get_sum(*numbers):
sum = 0
for n in numbers:
sum += n
return sum
#在這里寫下你的代碼來調用get_sum來求5個數字的和,並輸出這個結果
print (get_sum(1,2,3,4,5))
結果會是什麼呢?大家可以自己動手操作起來看下,以就是關於Python中函數可變參數的全部內容,希望這篇文章對大家學習或使用python能有所幫助
『叄』 python 可變參數函數 怎麼做加法
函數add應該這樣定義:
每個=表示一個空格
def add(*a):
====s=0
====for b in a:
========s+=b
====return s
『肆』 Python函數的個數可變參數問題
def f(*paralist, **paradict):
for i in paralist:
print i
for i in paradict:
print i, paradict[i]
『伍』 python中定義函數時如何書寫可變參數和默認參數
參數名前面加*是可變位置參數,
加**是可變關鍵字參數;
參數名=默認值可以用來為參數指定默認值。
下面是一個例子:
#/使前面的參數成為僅僅是位置參數
def f(a=1,b=2,/,c=3,*args,**kwargs):print(a,b,c,*args,kwargs)
def f2(a=1,b=2,c=3,*args,**kwargs):print(a,b,c,*args,kwargs)
#*使後面的參數成為僅僅是關鍵字參數
def f3(a=1,b=2,*,c=3,d=4):print(a,b,c,d)
#/使前面的參數成為僅僅是位置參數
def f4(a=1,b=2,/,c=3,d=4):print(a,b,c,d)
f()
f(11,22)
#f(a=11,b=22)
f(c=666)
f(1,2,3,4,5,x=5,y=6)
f2()
f2(a=11,b=22)
f2(c=888)
f2("a","b","c",1,2,p="ok")
f3(1001,2222)
f3(a=1001)
f3(111,c=333,d=444)
f3(6,6,c=6,d=6)
#f3(6,6,6,6)
f4(1001,2222)
#f4(1001,b=2222)
f4(1001)
#f4(a=1001)
f4(111,c=333,d=444)
f4(1,2,3,4)
運行結果截圖如下:
『陸』 python中默認參數與可變參數是什麼意思
默認參數就是調用該函數時,不指定該參數的情況的默認值。比如對數據進行分析的函數,如果大部分情況不需要保存結果,但是有時候又需要保存,就可以增加一個參數來指定是否保存,默認不保存,調用時可以不管該參數。
『柒』 python 默認參數 和 可變參數
參數傳遞的事了。
rol("hello",*args)這裡面*args可以解壓,就是把列表打散,然後復制給函數,當然函數裡面也有*args,所以又生成了一個tuple。
下面的輸出結果跟你的一樣。注意星號的用法。
『捌』 python中函數的參數可不可以在可變參數後面加一般參數
定義函數的參數時,用IDataParameter[]和SqlParameter[]時沒有區別,作用是一樣的。IDataParameter[]是SqlParameter[]的介面實例。定義函數的時候,我們把參數的名字和位置確定下來,函數的介面定義就完成了。對於函數的調用者來說,只需要知道如何傳遞正確的參數,以及函數將返回什麼樣的值就夠了,函數內部的復雜邏輯被封裝起來,調用者無需了解。Python的函數定義非常簡單,但靈活度卻非常大。除了正常定義的必選參數外,還可以使用默認參數、可變參數和關鍵字參數,使得函數定義出來的介面,不但能處理復雜的參數,還可以簡化調用者的代碼。
『玖』 python怎麼查看函數有什麼參數
在開發中我們可以藉助於相關插件或使用Python內置函數"help()」來查看某個函數的參數說明,以查看內置函數sorted()為例:
『拾』 python 帶可變參數的裝飾器怎麼用
裝飾器本身是用來是為一個函數是實現新的功能,並且不改變原函數的代碼以及調用方式。
遇到這樣一種問題:
眾多函數調用了你寫的裝飾器,但客戶有需求說,我想實現我可以隨之控制裝飾器是否生效。
那你就不可能在得到命令的時候去原函數頭部去做刪除和添加裝飾器調用的命令。這是就可以用到帶參數的裝飾器,定義一個開關,調用裝飾器的時候,把這個裝飾器的開關參數給傳遞進去,這樣當開關打開的時候裝飾器生效,關閉的時候則只執行原函數的代碼。
舉例:開關參數為True的時候執行過程:
F=True#step1裝飾器的開關變數
defouter(flag):#step2
defwrapper(func):#step4
definner(*args,**kwargs):#stpe6
ifflag:#step9
print('before')#step10
ret=func(*args,**kwargs)#step11執行原函數
print('after')#step13
else:
ret=func(*args,**kwargs)
print('123')
returnret#step14
returninner#step7
returnwrapper#step5
@outer(F)#先執行step3:outer(True)這個函數,然後step6:@wrapper#此處把開關參數傳遞給裝飾器函數
defhahaha():
pass#step12
hahaha()#step8相當於inner()
開關參數為False的時候執行過程:
F=False#stpe1裝飾器的開關變數
defouter(flag):#step2
defwrapper(func):#step4
definner(*args,**kwargs):#stpe6
ifflag:#step9
print('before')
ret=func(*args,**kwargs)
print('after')
else:
ret=func(*args,**kwargs)#step10執行原函數
print('123')#step12
returnret#step13
returninner#step7
returnwrapper#step5