• *args 和 **kwargs 的区别


    截取百度里的两个答案:

    这是Python函数可变参数 args及kwargs

    *args表示任何多个无名参数,它是一个tuple

    **kwargs表示关键字参数,它是一个dict

    测试代码如下:

    1 def foo(*args,**kwargs):
    2 print 'args=',args
    3 print 'kwargs=',kwargs
    4 print '**********************'
    5 if __name__=='__main__':
    6 foo(1,2,3)
    7 foo(a=1,b=2,c=3)
    8 foo(1,2,3,a=1,b=2,c=3)
    9 foo(1,'b','c',a=1,b='b',c='c')

    执行结果如下:

     1 args= (1, 2, 3)
     2 kwargs= {}
     3 **********************
     4 args= ()
     5 kwargs= {'a': 1, 'c': 3, 'b': 2}
     6 **********************
     7 args= (1, 2, 3)
     8 kwargs= {'a': 1, 'c': 3, 'b': 2}
     9 **********************
    10 args= (1, 'b', 'c')
    11 kwargs= {'a': 1, 'c': 'c', 'b': 'b'}
    12 **********************

    百度回答2:这是一种特殊的语法,在函数定义中使用*args和**kwargs传递可变长参数。*args用作传递非命名键值可变长参数列表(位置参数); **kwargs用作传递键值可变长参数列表。

    示例 *args

    1 def test_var_args(farg, *args):    
    2     print "formal arg:", farg    
    3     for arg in args:        
    4         print "another arg:", arg 
    5  
    6 test_var_args(1, "two", 3)
    1 # 输出
    2 formal arg: 1
    3 another arg: two
    4 another arg: 3

    示例 **kwargs

    1 def test_var_kwargs(farg, **kwargs):
    2     print "formal arg:", farg
    3     for key in kwargs:
    4         print "another keyword arg: %s: %s" % (key, kwargs[key])
    5  
    6 test_var_kwargs(farg=1, myarg2="two", myarg3=3)
    1 # 输出
    2 formal arg: 1
    3 another keyword arg: myarg2: two
    4 another keyword arg: myarg3: 3

    练习:

     1 print("ex18.命名,变量,代码,函数")
     2 
     3 #print_two是函数名,(*args)是参数,print()是函数体
     4 def print_two(*args):
     5 arg1,arg2 = args
     6 print("arg1:%r,arg2:%r"%(arg1,arg2))
     7 
     8 def print_two_again(arg1,arg2):
     9 print("arg1:%r,arg2:%r"%(arg1,arg2))
    10 
    11 def print_one(arg1):
    12 print("arg1:%r"%arg1)
    13 
    14 def print_none():
    15 print("I got nothin'.")
    16 
    17 #以下为函数参数
    18 print_two("Zed","solo")
    19 print_two_again("Zed","Shaw")
    20 print_one("First!")
    21 print_none()
    22 
    23 '''
    24 注意事项:
    25 1、函数定义是以def开始
    26 2、函数名称后面跟着括号,和冒号
    27 3、函数名称可以是字符和下划线组成
    28 4、括号内包含参数,且参数是以逗号隔开;也可以没有参数
    29 5、函数体前有缩进,4个空格
    30 6、参数内容可以重复,参数名称不可以一样
    31 7、函数结束位置取消了缩进
    32 '''

    原文:https://zhidao.baidu.com/question/367559039025445444.html

  • 相关阅读:
    洛谷p1056
    __int64
    杭电2057
    4.4清北学堂Day1 主要内容:数论,数学
    递推的一点理解
    高精度减法
    高精度加法
    p1184高手之在一起
    对于rqy今天讲座的一些理解和看法吧
    PHP.21-商品信息管理
  • 原文地址:https://www.cnblogs.com/aszeno/p/9151515.html
Copyright © 2020-2023  润新知