- # 位置参数: 不能很好的控制参数的数量, 参数数量多需要写很多, 而且必须一一对应
- def eat(staple_food, cold_dish, drink, ice_cream):
- print("I want eat", staple_food, cold_dish, cold_dish, drink, ice_cream)
- # eat("盖浇饭", "馒头", "腊肠", "橙汁", "哈根达斯") # TypeError: eat() takes 4 positional arguments but 5 were given
- eat("鱼香肉丝盖浇饭", "凉皮", "可乐", "老北京冰棍")
- # 动态参数
- # 动态接收位置参数
- # 顺序: 位置参数 => *args(arguments) => 默认值参数
- # * 在这里表示接收位置参数的动态传参, 接收到的是元组
- def eat(name, *food, location="Beijing"): # 参数名是 food * 表示动态传参
- print("in", location, name, "want eat", food)
- eat("xiaogaokui", "狗不理", "大麻花", location="Tianjin")
- eat("wangxiaoming", "大米饭", "可乐")
- eat("big DS", "馒头")
- # 动态接收关键字参数
- def eat(*args, **kwargs): # 无敌传参
- print(args, kwargs)
- eat(good_food="狗不理", no_good_food="汉堡", drink="大白梨", ice_cream="巧乐兹")
- # 传递顺序
- # 位置参数, *args, 默认值参数, **kwargs
- # 参数分类
- # 实际参数:
- # 位置参数
- # 关键字参数
- # 混合参数 (位置, 关键字)
- # 形式参数:
- # 位置参数
- # 默认值参数
- # 动态传参:
- # *args: 位置参数动态传参
- # **kwargs: 关键字参数动态传参
- def fun(a, *args, c="哈哈", **kwargs):
- """参数传递顺序测试"""
- print(a, args, c, kwargs)
- fun(1, 2, 3, 4, 5, 6)
- # 注释分类
- # 单行注释
- # '''多行注释'''
- # 函数注释
- # def func(a, b):
- # """
- # 这个函数是用来计算 a 和 b 的和
- # :param a: 第一个数据
- # :param b: 第二个数据
- # :return: 返回的是两个数的和
- # """
- # return a + b
- #
- # print(func.__doc__) # document 文档
- # 接收所有参数
- def func01(*args, **kwargs):# 无敌 *args 相当于一个聚合的作用
- print(args, kwargs)
- # func01(1, 2, 3, t = 6, 4, 5, a=6, b=7, c=9) # SyntaxError: positional argument follows keyword argument
- func01(1, 2, 3, 4, 5, a=6, b=7, c=9)
- # * 不同位置, 不同作用
- # 形参: 聚合
- def func02(*food): # 聚合, 位置参数
- print(food)
- # 实参: 打散
- lst = ["鸡蛋","煎饼果子","猪蹄","滋滋冒油"]
- func02(*lst) # 打散. 把 list, tuple, set, str 进行迭代打散
- # 聚合成关键字参数
- def func(**kwargs):
- print(kwargs)
- dic = {"name":'alex', 'age':'18'}
- func(**dic) # 打散成关键字参数
动态参数
来源: http://www.bubuko.com/infodetail-3028633.html