可變長度的參數傳遞
def p(fmt, *arg):
print fmt % arg
# 傳多個參數
s1 = "hello"
s2 = "world"
p("%s %s", s1, s2)
# 把 list 的 element 當作參數
l = ["Allen", "Billy", "Elmer"]
p("%s %s %s", *tuple(l))
# 混合模式
l = ["Allen", "Billy", "Elmer"]
s = "hello"
p("%s, %s %s %s", *((s, ) + tuple(l)))
Output:
hello world Allen Billy Elmer hello, Allen Billy Elmer
Wrapper function 的寫法
def func(name, tel, city=None):
print "name=%s" % name
print "tel=%d" % tel
print "city=%s" % city
def wrapper(*args, **kwargs):
print args
print kw
func(*args, **kwargs)
wrapper("benson", 3345, city="Taipei")
Output:
('benson', 3345)
{'city': 'Taipei'}
name=benson
tel=3345
city=Taipei
由此可見,arg 是 tuple,kwargs 是 dict 型態
這邊沒寫好可能會出現 error
only named arguments may follow *expression
*args 與 args 的差別
def func(x, y, z):
print x+y+z
def wrapper1(*args): # with star
func(*args)
def wrapper2(args): # without star
func(*args)
wrapper1(1, 2, 3)
wrapper2([1, 2, 3])
Output:
6 6
參考資料
Python, tuple arguments playing nicely with others - Stack Overflow
B1175C97BC
回覆刪除Beğeni Satın Al
Mobil Ödeme Takipçi
Tiktok Takipçi Kasma
93AB7AB0
回覆刪除gebze esçort
ünye esçort
gümüşhane esçort
esçort bayan kilis
muratpaşa esçort
gemlik esçort
esçort karabük
nusaybin esçort
trabzon esçort