python *args **kwargs,传入不固定的参数给函数,或者传入很多的内容给函数,常用在构造函数中。

‘‘‘
例1:展示*args的用法,传入多个参数,不进行预先定义。
本例传入了3个参数。没有预先定义。在函数内自动生成元组()
‘‘‘
def q1(*args):
    print(‘例1‘)
    print(args)
    print(type(args))
    print(args[0])
t1 = 123
t2 = 234
t3 = 345
q1(t1, t2, t3)
print(‘-----------------‘)
‘‘‘
例2,和例1一样,但是传入字符串,元组,列表,都会在函数内生成元组()
注意引入参数时要有*号,
没有星号,函数把你传入的参数列表(元组,字符串)当作一个参数来处理。
有星号时,函数把你传入的参数列表(元组,字符串)当作多个参数来处理,在函数内生成元组()
如最后一个调用q2(t3)
‘‘‘
def q2(*args):
    print(‘例2‘)
    print(args)
    print(type(args))
    print(args[0])
t1 = 123,234,345
q2(*t1)
t2 = (234,345,456)
q2(*t2)
t3=[345,456,567]
q2(*t3)
q2(t3)
print(‘-----------------‘)
‘‘‘
例3,本例展示使用**kwargs,传入字典,函数内同样还是字典。
‘‘‘
def q3(**kwargs):
    print(‘例3‘)
    print(kwargs)
    print(type(kwargs))
    print(kwargs[‘name1‘])
di = {
    ‘name1‘: ‘jack‘,
    ‘name2‘: ‘rose‘,
}
q3(**di)
print(‘-----------------‘)
‘‘‘
例4:本例展示,函数定义时,可以同时使用*args,**kwargs来定义函数。
但是引用时,可以分开引用,只引用*args,或只引用**kwargs,暂时屏蔽函数内对元组和字典的使用,避免报错。
‘‘‘
def q4(*args,**kwargs):
    print(‘例4‘)
    print(args)
    # print(args[0])
    print(kwargs)
    # print(kwargs.get(‘name1‘))
t1 = 123,234,345
di = {
    ‘name1‘: ‘jack‘,
    ‘name2‘: ‘rose‘,
}
q4(*t1)
print(‘---‘)
q4(**di)
print(‘-----------------‘)
‘‘‘
例5,本例展示同时定义*args,**kwargs,并且同时使用。
‘‘‘
def q5(*args,**kwargs):
    print(‘例5‘)
    print(args)
    print(args[0])
    print(kwargs)
    print(kwargs.get(‘name1‘))
t1 = 123,234,345
di = {
    ‘name1‘: ‘jack‘,
    ‘name2‘: ‘rose‘,
}
q5(*t1,**di)
print(‘-----------------‘)
‘‘‘
例6,本例展示把*args,作为多余的参数传入函数,也是看代码经常看到的。
‘‘‘
def q6(t1,t2,*args):
    print(‘例6‘)
    print(t1)
    print(t2)
    print(args)
    print(args[0])
t1 = 123,234,345
q6(‘t123‘,‘t234‘,*t1)
print(‘-----------------‘)
‘‘‘
例7,本例展示把**kwargs,作为多余的参数传入函数,也是看代码经常看到的。
‘‘‘
def q7(k1,k2,**kwargs):
    print(‘例7‘)
    print(k1)
    print(k2)
    print(kwargs)
    print(kwargs.get(‘name1‘))
    pass
di = {
        ‘name1‘: ‘jack‘,
        ‘name2‘: ‘rose‘,
}
q7(k1=‘t123‘,k2=‘t234‘,**di)
print(‘-----------------‘)
‘‘‘
例8,本例展示把*args,**kwargs共同使用,作为多余的参数传入函数,也是看代码经常看到的。
除函数定义的k1,k2,又在引用时,加入了  ‘t345‘,k3=1,
结果
t123   (k1)
t234    (k2)
(‘t345‘, 123, 234, 345) (args)
{‘k3‘: 1, ‘k4‘: 2, ‘name1‘: ‘jack‘, ‘name2‘: ‘rose‘}     (kwargs)
jack  kwargs[‘name1‘]
‘‘‘
def q8(k1,k2,*args,**kwargs):
    print(‘例8‘    )
    print(k1)
    print(k2)
    print(args)
    print(kwargs)
    print(kwargs.get(‘name1‘))
    pass
t1 = 123,234,345
di = {
        ‘name1‘: ‘jack‘,
        ‘name2‘: ‘rose‘,
}
q8(‘t123‘,‘t234‘,‘t345‘,k3=1,k4=2,*t1,**di)
print(‘-----------------‘)

基本上也就这么多了。

原文地址:https://www.cnblogs.com/jackadam/p/8413070.html

时间: 2024-08-28 19:21:33

python *args **kwargs,传入不固定的参数给函数,或者传入很多的内容给函数,常用在构造函数中。的相关文章

python *args *kwargs 参数详解

可变参数 在Python函数中,还可以定义可变参数.顾名思义,可变参数就是传入的参数个数是可变的,可以是1个.2个到任意个,还可以是0个. 我们以数学题为例子,给定一组数字a,b,c--,请计算a2 + b2 + c2 + --. 要定义出这个函数,我们必须确定输入的参数.由于参数个数不确定,我们首先想到可以把a,b,c--作为一个list或tuple传进来,这样,函数可以定义如下: 1 def calc(numbers): 2 sum = 0 3 for n in numbers: 4 sum

python args & kwargs

Today,We will talk some about the argument and arguments ... #!/usr/bin/python def fun(*args): for value in args: print value if __name__ == '__main__': fun(11,22,33,44,55) What is type of (*args) ? Do you really want to know ,just keep read ... #!/u

Python面试题之这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?

如果我们不确定要往函数中传入多少个参数,或者我们想往函数中以列表和元组的形式传参数时,那就使要用*args: 如果我们不知道要往函数中传入多少个关键词参数,或者想传入字典的值作为关键词参数时,那就要使用**kwargs. args和kwargs这两个标识符是约定俗成的用法,你当然还可以用*bob和**billy,但是这样就并不太妥. 下面是具体的示例: def f(*args,**kwargs): print args, kwargs l = [1,2,3]t = (4,5,6)d = {'a'

报表制作1(传入对象和其他参数)

转自:http://www.cnblogs.com/ms-grf/p/6755581.html 打印js $scope.printObserveRecord = function () { if ($scope.printObserveRecordShow) { var erObservationDetailList = []; erObservationDetailList.push($scope.erObservationDetail); $scope.printInfoObject = {

常用shell命令中你所不熟悉的参数

1.   ls: 类似于dos下的dir命令 ls最常用的参数有三个: -a -l -F. ls –a Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来. ls –l 该参数显示更详细的文件信息. ls –F 使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数.但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就

python的函数介绍 位置参数 关键字参数 默认参数 参数组 *args **kwargs

1.数学意义的函数与python中的函数 数学意义的函数 y = 2*3+1 x =3 y =7 x是自变量,y是因变量 2.python中定义函数的方法 一个函数往往都是为了完成一个特定的功能而存在的,所以注释信息加上是个好习惯 def atest(x): "The function definitions" x += 1 return x def:     定义函数的关键字 atest:     函数名 ():     内可定义形参 "":    文档描述(非必

python 中参数*args, **kwargs

python 中参数*args, **kwargs def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '---------------------------------------' if __name__ == '__main__': foo(1,2,3,4) foo(a=1,b=2,c=3) foo(1,2,3,4, a=1,b=2,c=3) foo('a', 1, None, a

python 位置参数和关键字参数 *args **kwargs

#!/usr/bin/env pythondef foo(*args,**kwargs): print('args: {0}'.format(args)) print('kwargs {0}'.format(kwargs)) foo(1,2,3,a='first',b='second') 运行结果: args: (1, 2, 3)     #位置参数是一个元组kwargs {'b': 'second', 'a': 'first'}   #关键字参数是一个字典 原文地址:https://www.c

python函数参数*args **kwargs

毕业多年,把C++都就饭吃了....今天居然在纠结什么是形参什么是实参..... 定义函数里面写的参数就是形参,因为没有内存占用,实际调用时写的参数就是实参,因为有内存占用和传值 然后就是位置参数,可变参数和关键字参数 def foo(a,*b,**c): print(a) print(b) print(c) if __name__=="__main__": foo(1,2,3,4,k=1,g=2) 如上图程序,a,*b,**c这三个是形参,a,*b这两个是位置参数,**c是关键字参数