先来看个例子:
- 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=1, b='2', c=3)
-
- 输出结果如下:
-
- args = (1, 2, 3, 4)
- kwargs = {}
- ---------------------------------------
- args = ()
- kwargs = {'a': 1, 'c': 3, 'b': 2}
- ---------------------------------------
- args = (1, 2, 3, 4)
- kwargs = {'a': 1, 'c': 3, 'b': 2}
- ---------------------------------------
- args = ('a', 1, None)
- kwargs = {'a': 1, 'c': 3, 'b': '2'}
- ---------------------------------------
可以看到,这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。
呵呵,知道*args和**kwargs是什么了吧。还有一个很漂亮的用法,就是创建字典:
- def kw_dict(**kwargs):
- return kwargs
- print kw_dict(a=1,b=2,c=3) == {'a':1, 'b':2, 'c':3}
其实python中就带有dict类,使用dict(a=1,b=2,c=3)即可创建一个字典了。
from:http://www.linuxeden.com/html/develop/20111011/114777.html
分享到:
相关推荐
一、*args的使用方法 *args 用来将参数打包成tuple给函数体调用 def args_test(x, y, *args): print(x, y, args) args_test(1,2,3,4,5) ...参数arg、*args、**kwargs三个参数的位置必须是一定的
Python 中的*args 和**kwargs的详细解释与理解
# 当函数的参数不确定时,可以使用*args和**kwargs。*args没有key值,**kwargs有key值 def fun_var_args(farg, *args): print ‘args:’, farg for value in args: print ‘another arg:’,value # *args可以当作...
主要介绍了Python可变参数*args和**kwargs用法,结合实例形式总结分析了Python中可变参数*args和**kwargs的功能、区别与具体使用技巧,需要的朋友可以参考下
**kwargs:表示的就是形参中按照关键字传值把多余的传值以字典的方式呈现 主要是 用来表示函数接收可变长度的关键字参数列表作为函数的输入。 *args: 就是以元组的形式来呈现多余的参数,接受非关键字的参数 ...
一、*args的使用方法 *args 用来将参数打包成tuple给函数体调用 def fun(*arg): print(arg,type(arg)) print(*arg) fun(1,2,[8,9]) (1, 2, [8, 9]) 2 [8, 9] 并不一定必须是args,也可以是别的,但是官方不建议...
双星号形式(**kwargs)用来传递键值可变参数列表。 下面的例子,传递了一个固定位置参数和两个变长参数。 def test_var_args(farg, *args): print formal arg:, farg for arg in args: print another arg:, arg ...
先来看一个例子:复制代码 代码如下:>>> def foo(*args, **kwargs): print ‘args =’, args print ‘kwargs = ‘, kwargs print ‘———————–‘ >>> if __name__ == ‘__main__’: foo(1, 2, 3, 4) ...
lambda,** kwargs和* args 当您需要重新学习lambda functions , **kwargs和*args时,可以使用此repo,也可以用来了解这些pythonic功能! 用 :red_heart: 通过mmtmn
def foo(*args,**kwargs): print 'args is',args print 'kwargs is',kwargs foo(1,2) foo(k=1,w=2,a=3,r=4,g=5,s=6) foo(1,2,a=1,b=2,c=2) foo('a',1,None,a=1,b='2',c=3) 在函数foo中定义了两个参数 在调用的时候...
在 Python 中,* 和 ** 具有语法多义性,具体来说是有四类用法。 1. 算数运算 * 代表乘法 ** 代表乘方 >>> 2 * 5 10 >>> 2 ** 5 32 2. 函数形参 *args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递...
使⽤ `*args`(元组) 和 `**kwargs` (字典)来调⽤函数 使用`*args`非关键字可变参数方式 # 以元祖方式传递 nums = (1, 2, 3) 使用`**kwargs`关键字可变参数方式 # 以字典方式传递 kwargs = { "arg1...
2. *args 和 **kwargs 1 1. *args 的⽤法 1.1 2. **kwargs 的⽤法 1.2 3. 使⽤ *args 和 **kwargs 来调⽤函数 1.3 4. 啥时候使⽤它们 1.4 3. 调试 Debugging 2 4. ⽣成器 Generators 3 1. 可迭代对象(Iterable) 3.1 ...
当对象实例化时,如果有参数传入,则会传入**kwargs,如下面,user = User(name=”bobby”), 调试中发现,args的tuple的值为0,无值传入。 而kwargs的值有传入{‘name’:’bobby’},即参数被传入了kwargs的dict中 ...
Python基础教程:函数参数和注解 四种参数 Python函数func定义如下: def func(first, *args, second="Hello World", **kwargs): print(first) print(args) print(second) print(kwargs) func("lisi", "san", py=...
在旧版本中,可以使用apply(function, *args, **kwargs)进行调用,但是在新版本中已经移除,以function(*args, **kwargs)进行替代,所以也不应该再使用apply方法 示例代码: def func_a(func, *args, **kwargs): ...