zoukankan      html  css  js  c++  java
  • python *args 与 **kwargs

    描述:

      *args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成*args 和**kwargs。  *(星号)才是必须的. 你也可以写成*ar 和**k. 而写成*args 和**kwargs只是一个通俗的命名约定。

    python函数传递参数的方式有两种:

    • *args表示任何多个无名参数,它本质是一个tuple;
    • **kwargs表示关键字参数,它本质上是一个dict;

    如果同时使用*args和**kwargs时,必须*args参数列要在**kwargs前。

    实例1:

     1 def fun(*args,**kwargs):
     2 
     3     print('args=', args)
     4 
     5     print('kwargs=',kwargs)
     6 
     7 fun(1,2,3,4,A='a',B='b',C='c',D='d')
     8 
     9 #输出结果:
    10 
    11 #args= (1, 2, 3, 4)
    12 
    13 #kwargs= {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}

    实例2:

     1 def mutil(name,*ar):
     2     print(name,"主人,你好")
     3     for item in ar:
     4         print("我的名字叫:",item)
     5 
     6 mutil("liuhu","xiaoyun","liuwei")
     7 
     8 输出结果:
     9 # liuhu 主人,你好
    10 # 我的名字叫: xiaoyun
    11 # 我的名字叫: liuwei

    实例3:

    1 def love(**kwargs):
    2     for key,value in kwargs.items():
    3         print("{0}爱着{1}".format(key,value))
    4 love(name="liuhu",age=18)
    5 
    6 #输出结果:
    7 # name爱着liuhu
    8 # age爱着18

    实例4:

     1 def test(arg1, arg2, arg3):
     2     print("arg1:", arg1)
     3     print("arg2:", arg2)
     4     print("arg3:", arg3)
     5 
     6 args = ("two", 3, 5)
     7 test(*args)
     8 kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
     9 test(**kwargs)
    10 
    11 #输出结果:
    12 # arg1: two
    13 # arg2: 3
    14 # arg3: 5
    15 
    16 # arg1: 5
    17 # arg2: two
    18 # arg3: 3
  • 相关阅读:
    [转]Java中的回车换行符/n /r /t
    [转]jquery.validate.js表单验证
    [转]PowerDesigner中name和code取消自动关联
    Oracle 执行报错表空间或临时表空间不足,降低水位线方法
    cookie实现自动登录
    linux 进程管理相关内容
    招银网络科技面试
    唯品会面试被虐
    sql查询最大的见多了,查询第二的呢???
    HashMap的key可以是可变的对象吗???
  • 原文地址:https://www.cnblogs.com/helloTerry1987/p/10992209.html
Copyright © 2011-2022 走看看