zoukankan      html  css  js  c++  java
  • 动态参数

    # 位置参数:不能很好的控制参数的数量,参数数量多需要写很多,而且必须一一对应
    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) # 打散成关键字参数

     

  • 相关阅读:
    python 列表
    pytho set集合
    python 字典
    并发编程(原理篇 上)
    面向对象分析方法
    python 小记 整数与小数id
    python入门 第二天笔记
    python 元组问题解决
    python入门第一天作业。讲师写的代码。
    python学习笔记enumerate()与range(len)运用及赋值小计
  • 原文地址:https://www.cnblogs.com/xiaogaokui/p/10733937.html
Copyright © 2011-2022 走看看