zoukankan      html  css  js  c++  java
  • Python正课32 —— 函数参数的补充

    本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12525632.html

    一:命名关键字参数

    在定义函数时,*后定义的参数,如下所示,称之为命名关键字参数

    特点1:命名关键字实参必须按照key=value的形式为其传值

    def func(x,y,*,a,b):    # 其中,a和b称之为命名关键字参数
        print(x,y)
        print(a,b)
        
    func(1,2,b=222,a=111)
    func()  # TypeError: func() missing 2 required positional arguments: 'x' and 'y'
    
    # 示例
    def func(x,y,*,a=11111,b):	# 不会出现语法错误,*后的a和b是命名关键字,a=111只是为命名关键字形参设置默认值
        print(x,y)
        print(a,b)
    
    func(1,2,b=22222)
    

    特点2:组合使用(了解)

    形参混用的顺序:位置形参,默认形参,*args,命名关键字形参,**kwargs

    def func(x,y=1,*args,z,**kwargs):
        print(x)
        print(y)
        print(args)
        print(z)
        print(kwargs)
    

    二:实参混用的顺序:

    def func(x,y,z,a,b,c):
        print(x,y,z,a,b,c)
    
    func(111,y=222,*[333,444],**{'b':555,'c':666})
    # 相当于:func(111,y=222,333,444,b=555,c=666)
    报错:TypeError: func() got multiple values for argument 'y' 给y赋了多个值
    
    正确顺序应该是:
    def func(x,y,z,a,b,c):
        print(x,y,z,a,b,c)
        
    func(111,*[222,333],a=444,**{'b':555,'c':666})
    # 相当于:func(111,222,333,a=444,b=555,c=666)
    
    # 也可以是:
    # func(111,*[222,333],**{'b':555,'c':666},a=444,)
    # 相当于:func(111,3333,4444,b=555,c=666,a=444)
    
    输出:
    111 222 333 444 555 666
    
  • 相关阅读:
    浮动广告
    jQuery给table添加行和删除行
    oracle优化方式和sql标准
    使用JavaScript中的ActiveXObject填充并设置Excel格
    打印相关的js
    利用js导出Excel
    Oracle左外连接和右外连接的写法
    天气预报抓取的方法和源代码(包括从IP获取)
    algorithm
    ungetc
  • 原文地址:https://www.cnblogs.com/xuexianqi/p/12525632.html
Copyright © 2011-2022 走看看