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

    回顾

    一、参数的种类:
    1、静态参数:
        (1)、普通参数:严格按照顺序,将实际参数复制给形式参数。
        (2)、默认参数:一定要放在参数列的最后(即普通参数后面)。
             注意:
                  给默认参数传参,会被覆盖掉(例如:XX = OK被BB覆盖)
                  默认参数一定要放到,所有参数的末尾否则报错。
        (3)、指定参数:讲实际参数复制给指定的形式参数。
     
    2、动态参数:
        (1)、*args:     把N个实参赋值给形参,并转化为元祖。 f(*[1,22,33,44,55])
        (2)、**kwargs:把N个关键字参数转换成字典额方式。(关键字=key)  f1(**{''k1":''v1","k2":"v2"})
        (3)、万能参数:def  f1(*args **kwargs)
     
     
     

    动态参数

    一、*  : 接受N个位置参数,转化为元祖的形式:(*args)
    实例1、实参无论传输的是什么数据类型,都会视为一个元素,并转化成元祖。
     1 def f1(*args):
     2     print(args,type(args))
     3 
     4 f1(11)
     5 
     6 li = [11,22,33,44]
     7 f1(li)
     8 f1(li,'dy','aa','bb','cc')
     9 
    10 
    11 显示结果:
    12 (11,) <class 'tuple'>
    13 ([11, 22, 33, 44],) <class 'tuple'>
    14 ([11, 22, 33, 44], 'dy', 'aa', 'bb', 'cc') <class 'tuple'>
    实例2、将列表里面的每一个元素,都将转化到元祖的元素里面:(可接收“,”的类型)
     
    def f1(*args):
        print(args,type(args))
    
    li = [11,22,33,44]
    f1(*li)
    
    a = "Alex"
    f1(*a)
    
    
    显示结果:
    (11, 22, 33, 44) <class 'tuple'>
    ('A', 'l', 'e', 'x') <class 'tuple'>
    
    注意:实际是按照每个元素做了一次for 循环
    二、  ** : **kwargs:把N个关键字参数转换成字典额方式。
    在传值的时候,只能用“key:value”的方式进行传值
     
    实例1、必须指定一个key=value作为字典中的key:value
    def f1(**kwargs):
        print(kwargs,type(kwargs))
    
    f1(n1="alex",n2=18)
    
    {'n2': 18, 'n1': 'alex'} <class 'dict'>

    实例2:可以结合字典变量传输一个键值对

    1 def f1(**kwargs):
    2     print(kwargs,type(kwargs))
    3 
    4 
    5 dic = {'k1':'v1','k2':'v2'}
    6 f1(kk=dic)
    7 
    8 
    9 {'kk': {'k2': 'v2', 'k1': 'v1'}} <class 'dict'>

    实例3:直接的赋值,不需要做变动

     1 def f1(**kwargs):
     2     print(kwargs,type(kwargs))
     3 
     4 
     5 dic = {'k1':'v1','k2':'v2'}
     6 f1(**dic)
     7 f1(dic)
     8 
     9 
    10 {'k2': 'v2', 'k1': 'v1'} <class 'dict'>
    11 Traceback (most recent call last):
    12   File "D:/软件/pychar/data/day3/test.py", line 22, in <module>
    13     f1(dic)
    14 TypeError: f1() takes 0 positional arguments but 1 was given
    15 
    16 
    17 注意:如果不加**传值变量时就会报错。
     
    三、万能参数:
    实例1:一个星的在前面,两个星的在后面
     
     1 def f1(*args,**kwargs):
     2     print(args)
     3     print(kwargs)
     4 
     5 f1(11,22,33,44,k1="v1",k2="v2")
     6 
     7 
     8 显示结果:
     9 (11, 22, 33, 44)
    10 {'k2': 'v2', 'k1': 'v1'}
     
     
     
     
     
     
     
     
  • 相关阅读:
    linux 配置文件.conf 非打印字符出错的研究(一)
    Python:Relative import 相对路径 ValueError: Attempted relative import in non-package
    GitHub desktop 管理 gitee 私有库
    python enumerate ,range下标迭代
    everything http服务器局域网不能访问 // Windows evething http server connect timeout in lan
    python install jnius, sikuli ;Exception: Unable to determine JDK_HOME
    sublime3 自定义 修改 颜色主题 配色方案
    python K线 蜡烛图
    IOError: [Errno 22] invalid mode ('rb') or filename: ’u202a’ / 'xe2x80xaa’
    [资源]汇集最有用的PHP资源
  • 原文地址:https://www.cnblogs.com/abobo/p/8035772.html
Copyright © 2011-2022 走看看