动态传参

1.动态传参(重点) *, **
*, ** :
形参: 聚合
位置参数* -> 元组
关键字** -> 字典
实参: 打散
列表, 字符串, 元素 -> *
字典 -> **
形参顺序(重点):
位置, *args, 默认值, **kwargs

无敌传参
def func(*args, **kwargs): arguments参数 keyword-arguments关键字参数
  pass

# def chi(zhushi, cai, fushi, tang, tiandian):
#     print(zhushi,cai,fushi,tang,tiandian)
#
#
# chi("大碗大米饭", "火爆大头菜", "把子肉", "西红柿鸡蛋汤", "烤地瓜")
# chi("小碗大米饭", "火爆大头菜") # 参数不够

# 形参的顺序(重点):
#   位置  *args  默认值  **kwargs
# 以后写参数. 可以随意的进行搭配, 但是, 顺序不能串

# * 在形参位置. * 表示不定参数-接收的是位置参数
# 接收到的位置参数的动态传参: 都是元组
# def chi(*food): # 在形参这里把传递过来的实参进行了聚合,聚合成了元组
#     print(food)
#
# chi("小米粥")
# chi("小米粥", "咸鸭蛋")
# chi("爆米花", "咸鸭蛋", "辣白菜")
# chi("小米粥", "爆米花", "咸鸭蛋", "蒜茄子")

# def func(*args, a, b, c):
#     print(a, b , c, args)
#
# func(1,2,3,4,5,6,7, a=8, b=9,c=10)


# **在形参表示动态传参-关键字参数
# 关键字动态传参接收到的是字典
# def func(**kwargs):  # 也是聚合. ** 聚合成字典
#     print(kwargs)
#
# # func(1,2,3,4,5,6,7) # 位置参数. 报错
# func(a=1, b=2, c=3, haha="呵呵", good="not bad")


# def func(**kwargs, gender="男"):
#     print(gender, kwargs)
#
# func(a=5,b=3,c=6, gender="女")


# # 无敌传参
# def func(*args, **kwargs): # 参数没有限制. 随便传递
#     print(args)
#     print(kwargs)
#
# func(1,2,3,4, a=3,b=5)

# # 这里是形参
# # * 聚合
# def chi(*food):
#     print(food)
#
# lst = ["胡萝卜", "大白菜", "大萝卜", "草", "果冻"]
# # for el in lst:
# #     chi(el)
# #
# # chi(lst[0], lst[1], lst[2], lst[3], lst[4])
#
# # 这里是实参
# # * 打散
# chi(*"你今天吃了些什么") # * 打散. 把列表, 元组, 字符串打散成位置参数进行传递
# chi("胡萝卜", "大白菜", "大萝卜", "草", "果冻")

# def chi(**food): # 聚合, 聚合成字典
#     print(food)
#
# dic = {"主食":'面条', "副食":"土豆泥", "汤":"疙瘩汤"}
# dic1 = {}
#
# chi(**dic, 甜点="冰激凌") # 打散. 打散成关键字
# chi(主食="面条", 副食="土豆泥", 汤="疙瘩汤", 甜点="冰激凌")

# 形参:
#   *->元组, **->字典 表示聚合
# 实参:
#   *->列表,字符串,元组, **->字典 表示打散

  

原文地址:https://www.cnblogs.com/YangWenYu-6/p/10098505.html