美文网首页
python函数的参数操作,解包

python函数的参数操作,解包

作者: 寧寧欧尼 | 来源:发表于2018-07-29 19:32 被阅读0次

    一、函数的基本参数

    1.位置参数

    调用执行时,传递的实参按照位置顺序给形参进行赋值
    def test1(p1,p2,p3):
        print(p1,p2,p3)
    test1(10,20,30)
    

    2.默认值参数

    定义参数是,可以给参数赋值;如果函数参数中出现了默认值参数~一般默认值参数放在普通参数的后面
    def test2(n1, n2, opra="+"):
         print("计算n1:[%s]和n2[%s]进行opra[%s]运算" % (n1, n2, opra))
    # 默认值参数~如果实际参数传递了实际数据,就使用传递的数据;
    # 如果默认值参数~没有传递实参,直接使用默认数据进行运算
    test2(10, 20)
    test2(10, 20, "/")
    

    3.实参关键字参数

    调用时可以根据参数名称进行赋值[打破位置参数要求的顺序]
    def test3(p1, p2, p3):
        print(p1, p2, p3)
    
    test3(10, 20, 30)# 按照默认的位置顺序赋值
    test3(p2=20, p1=10, p3=30)# 按照形参名称赋值[可以打乱位置顺序]
    

    4.实参强制关键字参数

    【提高代码的可读性】

    实参传递数据是,形参中* 后面的所有参数~都要使用k=v的关键字参数方式传递数据
    def test4(*,p1,p2,p3)
        print(p1,p2,p3)
    
    test4(p1= 10,p2=20,p3=30)
    

    二、函数参数进阶

    5.可变参数

    函数在执行过程中,可以接受0~N个参数
    def test(*args)
        print("可变参数,在普通参数前面添加一个符号")
        print("test()函数就可以接收0~N个参数进行操作")
        print(args)
    
        for x in args:
            print(x)
    test()
    test("hello")
    test("hello", "jerry")
    test(1, 3, 5)
    test(1, 1, 2, 3, 5, 8, 13, 21)
    

    6.可变关键字参数

    (1)可变关键字参数,就是在普通参数的 前面添加符号 **
    (2)可变关键书参数,可以接受多个k=v的参数数据;并且可以接受0~n个k=v的数据,将数据包含在“字典”中
    def test2(**kwargs)
        print(kwargs,kwargs.get("name"))
    
    test2(name="tom")
    test2(name="shuke", age=62)
    test2(name="jerry", age=18, gender="男")
    #输出结果
    {'name': 'tom'} tom
    {'name': 'shuke', 'age': 62} shuke
    {'name': 'jerry', 'age': 18, 'gender': '男'} jerry
    

    7.函数的参数:万能形参

    号称可以及诶手任何参数:满足规范的情况下
    def test(*args,**kwargs)
        print(args,kwargs)
    test3()
    test3("hello")
    test3("hello", name="jerry")
    test3("hello", "world", name="tom")
    test3(name="tom")
    #输出结果
    
    () {}
    ('hello',) {}
    ('hello',) {'name': 'jerry'}
    ('hello', 'world') {'name': 'tom'}
    () {'name': 'tom'}
    

    三、解包

    解包:将组合数据类型拆分

    def test(p1,p2):
        print(p1,p2)
    #正常调用
    test(10,20)
    #非正常调用:列表解包
    nums = [10, 20]
    # 列表参数前面添加一个*符号,表示将列表拆分成一个一个独立的数据传递
    test(*nums)  # test(*nums) -> test(10, 20)
    
    # 非正常调用:字典解包
    #字典参数前面添加两个**
    nums2 = {"p1": 100, "p2": 200}
    test(**nums2)  # test(**nums2)-> test(p1=100, p2=200)
    

    相关文章

      网友评论

          本文标题:python函数的参数操作,解包

          本文链接:https://www.haomeiwen.com/subject/jhrtvftx.html