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)

执行结果如下
5.3Python函数(3):不定长位置参数&不定长关键字参数_第1张图片

@不定长关键字参数

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

执行结果如下
5.3Python函数(3):不定长位置参数&不定长关键字参数_第2张图片

你可能感兴趣的:(Python,语言程序设计)