zoukankan      html  css  js  c++  java
  • (十五)python3 可变长参数(arg,*args,**kwargs)

     可变长参数(*args,**kwargs)

    一、最常见的是在定义函数时,预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成*args 和**kwargs。  *(星号)才是必须的. 你也可以写成*ar 和**k. 而写成*args 和**kwargs只是一个通俗的命名约定.分别代表的是元组和字典

    def x(arg, *args, **kwargs):
        print('arg--> {}'.format(arg))
        print('args--> {} '.format(args))
        print('kwarg--> {} '.format(kwargs))
    
    
    x(1,2,3,4,key1="value1")
    
    #结果
    # arg--> 1
    # args--> (2, 3, 4) 
    # kwarg--> {'key1': 'value1'} 
    

      在函数调用时,位置参数传递必须在关键字参数左边或者说前面,**kwargs接收关键字参数,生成字典。*args接收除第一个位置参数和关键字参数外的其它参数生成元组,根参数是什么数据类型无关。

    def x(arg, *args, **kwargs):
        print('arg--> {}'.format(arg))
        print('args--> {} '.format(args))
        print('kwarg--> {} '.format(kwargs))
    
    
    x(1,(2,3,),4,key1="value1")
    
    #arg--> 1
    #args--> ((2, 3), 4) 
    #kwarg--> {'key1': 'value1'}
    

     

    二、函数调用时使用*args、**args

     下面方式调用应该不难理解

    def print_info(name,age,sex):
        print('name--> {}'.format(name))
        print('age--> {} '.format(age))
        print('sex--> {} '.format(sex))
    
    
    print_info("name1",25,"男")
    
    #name--> name1
    # age--> 25 
    # sex--> 男 
    

     换个方式:*args,**kwargs

    def print_info(name, age, sex):
        print('name--> {}'.format(name))
        print('age--> {} '.format(age))
        print('sex--> {} '.format(sex))
    
    
    list = ["李刚", 20, "男"]
    
    dic = {"name": "王某某", "age": 30, "sex": "女",}
    
    print_info(*list)
    
    # 将列表或元组前加“*”并传组函数,(注意:元素个数与位置必须对应)结果如下。
    # name--> 李刚
    # age--> 20
    # sex--> 男
    
    
    
    print_info(**dic)
    # 同样在传入的字典前加上“**”,此时字典会被解析成key=value的形式。注意key值和个数不能大于形参,结果如下
    
    # name--> 王某某
    # age--> 30
    # sex--> 女
    

    综合一下:  

    print_info("小刚",age=18,**{"sex":"男"})
    
    #
    name--> 小刚
    age--> 18 
    sex--> 男 
    

      

  • 相关阅读:
    SCILAB简介[z]
    UG OPEN API编程基础 2约定及编程初步
    Office 2003与Office 2010不能共存的解决方案
    UG OPEN API 编程基础 3用户界面接口
    NewtonRaphson method
    UG OPEN API编程基础 13MenuScript应用
    UG OPEN API编程基础 14API、UIStyler及MenuScript联合开发
    UG OPEN API编程基础 4部件文件的相关操作
    UG OPEN API编程基础 1概述
    16 UG Open的MFC应用
  • 原文地址:https://www.cnblogs.com/a-ant/p/11001311.html
Copyright © 2011-2022 走看看