5.3Python函式(3):不定長位置引數&不定長關鍵字引數
阿新 • • 發佈:2019-02-16
@不定長位置引數
- 使用*arg_name定義的位置引數,表示任意多個位置引數;
- Python標準庫中習慣使用*args來命名不定長位置引數,當然我們可以自定義這個名稱;
- 不定長位置引數的型別為元組;
在下面的例子中的*likesBy,表示點贊者,顯然點贊者具體都有誰是不確定的
def sayLove(sender,toWhom,times,*likesBy,city="深圳",date="8月7日"):
print("來自%s的深情表白"%(sender))
print("親愛的%s:"%(toWhom))
for i in range(times):
print("我是穿過大半個中國去睡你" )
print("我是穿過槍林彈雨去睡你")
print("我是把無數個黑夜摁進一個黎明去睡你")
print("我是千萬個我奔跑成一個我去睡你")
#應用關鍵字引數
print("——%s 於 %s"%(date,city))
# 應用不定長位置引數
print(likesBy,"表示點贊")
# 用【返回值】返回給呼叫者,表白的結果,返回值必然在最後一步
return "哦!"
# return 666
# return False
對這個函式發起呼叫,傳遞三個點贊者
result = sayLove("林阿華","拉芳",1,"易阿天","爾阿康","單阿信",city="北京",date="1月1日")
print("對方的回覆是:",result)
執行結果如下
@不定長關鍵字引數
- 使用**arg_name定義的關鍵字引數,表示任意多個關鍵字引數;
- Python標準庫中習慣使用**kwargs來命名不定長位置引數,我們可以自定義這個名稱;
- 不定長關鍵字引數的型別為字典;
在下面的例子中的*ps,表示備註資訊,顯然備註資訊是可多可少的
def sayLove(sender, toWhom, count, *args, city="深圳", date="8月7日" , **ps):
print("來自%s的深情表白" % (sender))
print("親愛的%s:" % (toWhom))
for i in range(count):
print("我是穿過大半個中國去睡你")
print("我是穿過槍林彈雨去睡你")
print("我是把無數個黑夜摁進一個黎明去睡你")
print("我是千萬個我奔跑成一個我去睡你")
# 應用不定長位置引數
print(args, "表示點贊")
# 應用不定長關鍵字引數
print("備註資訊是",ps)
# 用【返回值】返回給呼叫者,表白的結果,返回值必然在最後一步
return "哦!"
呼叫上述方法,在所有不定長關鍵字引數處傳入一堆自定義的鍵值對
result = sayLove(
"林阿華", "拉芳", 1, # 定長位置引數
"易阿天", "爾阿康", "單阿信", # 不定長位置引數
date="1月1日", city="臺北", # 定長關鍵字引數
breakfast="狗不理包子", lunch="黃燜雞米飯", supper="一碗香木桶飯" # 不定長關鍵字引數
)
print("對方的回覆是:", result)
執行結果如下