1. 程式人生 > >5.3Python函式(3):不定長位置引數&不定長關鍵字引數

5.3Python函式(3):不定長位置引數&不定長關鍵字引數

@不定長位置引數

  • 使用*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)

執行結果如下
這裡寫圖片描述