• pyhon之函数参数


    #函数的参数分为形参和实参,其中形参就是形式参数,是在创建函数的时候定义,实参就是实际参数,是在调用的函数的时候创建,这个并不是重点,具体
    #的参数内部,我们可以把参数分为以下4种
    # 1、普通参数
    # 2、默认参数
    # 3、指定参数
    # 4、动态参数

    1、首先学习普通参数
    #我们先来看下普通参数,也是最常用的参数,普通参数,实参和形参要一一对应,比如第一个实参必须要对应第一个形参,第二个实参必须要对应第二个
    #形参,以此类推........
    
    #普通参数,x对应123,y对应"abc"
    def test_func(x,y):
        print(x,type(x))
        print(y,type(y))
    
    test_func(123,"abc")
    
    # 123 <class 'int'>
    # abc <class 'str'>
    

    2、然后在学习默认参数

    #我们在来看下默认参数,默认参数可以允许我们在形参的位置给形参定义一个默认的参数,如果在实参的位置对该形参有对应的实参,则使用实参的值,
    #如果在实参的位置没有该形参对应的实参,则使用默认的值,且默认参数必须要放在最后面,不能放在非默认参数的前面,如果放在非默认参数的前面,
    #执行python代码将会报错
    
    def test_func(x,y="b",z="c"):
        print(x,type(x))
        print(y, type(y))
        print(z, type(z))
    
    
    #三个形参均有对应的实参,我们可以看到,最终的形参的值是对应的实参的值
    test_func("1","2","3")
    
    # 1 <class 'str'>
    # 2 <class 'str'>
    # 3 <class 'str'
    
    #三个形参只有第一个有对应的形参,我们可以看到x和y的值为定义的默认值
    test_func("a")
    # a <class 'str'>
    # b <class 'str'>
    # c <class 'str'>
    

    3、然后我们在来学习一下指定参数

    #然后我们在来看下指定参数,上面的普通参数,第一个形参必须要对应第一个实参.......,用指定参数,则可以不受此约束
    def test_func(x,y,z):
        print(x,type(x),id(x),sep="/",end="
    ")
        print(y,type(y), id(y), sep="/", end="
    ")
        print(z,type(z), id(z), sep="/", end="
    ")
    
    
    test_func(z="c",x="a",y="b")
    
    # a/<class 'str'>/26879968
    # b/<class 'str'>/26904800
    # c/<class 'str'>/26850848
    

     

    4、然后我们在来学习一下动态参数

    #最后我们在来学习一下大名鼎鼎动态参数,动态参数有三种,分别为*args;**kwargs,*args,**kwargs
    #首先来看下*args,*args主要用来接受多个普通参数,把多个普通参数全部放在args这个tuple中,如果实参传递一个list,如果直接传列表的名称
    #则该列表整体会被当做一个参数,如果在列表的前面加一个*号,则会把列表中的每一个元素当做一个参数参数传递给args这个tuple
    def test_func(*args):
        l = len(args)
        for i in range(l):
            print(args[i])
    
    
    l1 = [0,1,2,3,4,5]
    test_func(l1)
    # [0, 1, 2, 3, 4, 5]
    
    test_func(*l1)
    # 0
    # 1
    # 2
    # 3
    # 4
    # 5
    
    test_func(0,1,2,3,4)
    
    # 0
    # 1
    # 2
    # 3
    # 4
    
    #下面我们在来看下**kwargs
    def test_func(**kwargs):
        for k,v in kwargs.items():
            print(k,v)
    
    
    d1 = {"k1":"v1","k2":"v2","k3":"v3"}
    
    
    #这样传是错误的,python会报错,因为如果形参是**kwargs,需要传递x=y这样的结构,或者是字典前加**的结构
    # test_func(d1)
    
    #这样传才是正确的
    test_func(**d1)
    # k1 v1
    # k2 v2
    # k3 v3
    
    
    #这样的传递方法也是正确的
    test_func(x="1",y="2",z="3")
    # x 1
    # y 2
    # z 3
    

    5、最后我们在来看下大名鼎鼎的万能参数,完成参数可以接受任何人类可以想象到的参数

    #最后是大名鼎鼎的万能参数,在下面的例子中,*args必须要放在前面,**kwargs必须要放在后面,python会自动把list形状的参数放在args中,
    #把字典形状的参数放在kwargs中
    def test_func(*args,**kwargs):
        i = len(args)
        for n in range(i):
            print(args[n])
        for k,v in enumerate(kwargs.items()):
            print(k,v,sep=":",end="
    ")
    
    
    l1 = [0,1,2,3,4,5]
    d1 = {"k1":"v1","k2":"v2","k3":"v3"}
    
    test_func(*l1,**d1)
    
    # 0
    # 1
    # 2
    # 3
    # 4
    # 5
    # 0:('k1', 'v1')
    # 1:('k2', 'v2')
    # 2:('k3', 'v3')
    
    
    def test_func(*args,**kwargs):
        i = len(args)
        for n in range(i):
            print(args[n])
        for k,v in enumerate(kwargs.items()):
            print(k,v,sep=":",end="
    ")
    
    test_func(1,2,3,4,54,k1="v1",k2="v2",k3="v3")
    
    
    # 1
    # 2
    # 3
    # 4
    # 54
    # 0:('k1', 'v1')
    # 1:('k2', 'v2')
    # 2:('k3', 'v3')
    

    小伙伴们,python函数的参数我们就学习完了,如果有问题可以留言咨询!

  • 相关阅读:
    第二阶段冲刺第1天
    每周总结(5.30)
    每周总结(5.23)
    个人作业——顶会热词进程2.3
    个人作业——顶会热词进程2.2
    c#日期相关代码
    Linux服务器安装mysql
    Linux运行yum时出现/var/run/yum.pid已被锁定,PID为xxxx的另一个程序正在运行的问题解决
    【转】火狐浏览器js转换日期问题
    docker流程
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7101073.html
Copyright © 2020-2023  润新知