(转)python中的*args和**kw到底是个啥。看下面的例子就会懂了

简介: 先来看个例子:def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '---------------------------------------'if _...

先来看个例子:

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)即可创建一个字典了。

目录
相关文章
|
2月前
|
API Python
Python Tricks : Fun With args and kwargs
Python Tricks : Fun With args and kwargs
15 0
|
4月前
|
Python
python在列表、元素、字典、集合和numpy的数组前加上星号 * 是什么含义,以及*args和**kwargs的使用
python在列表、元素、字典、集合和numpy的数组前加上星号 * 是什么含义,以及*args和**kwargs的使用
51 0
|
7月前
|
开发者 Python
在Python中,什么时候不应该使用`*args`和`**kwargs`?
在Python中,什么时候不应该使用`*args`和`**kwargs`?
38 1
|
7月前
|
开发者 Python
在Python中,什么时候应该使用`*args`和`**kwargs`?
在Python中,什么时候应该使用`*args`和`**kwargs`?
66 1
|
7月前
|
Python
解释Python中的`*args`和`**kwargs`的用法。
解释Python中的`*args`和`**kwargs`的用法。
48 1
|
存储 Python
Python中函数参数传递方法*args, **kwargs,还有其他
本文将讨论Python的函数参数。我们将了解*args和**kwargs,/和*的都是什么,虽然这个问题是一个基本的python问题,但是在我们写代码时会经常遇到,比如timm中就大量使用了这样的参数传递方式。
301 0
|
存储 Python
python中argparse库,在B文件中如何调取A文件中的args参数,直接调用的方式
如果你想在 B 文件中导入 A 文件并直接访问其中的参数,那么需要注意以下两点: 1. 2. 在 A 文件中定义的参数必须是全局变量或者是可被外部访问的类属性或实例属性。否则,在 B 文件中无法直接访问这些参数。 3. 4. 如果 A 文件中定义了和 B 文件中相同名称的参数,那么在导入 A 文件之后,B 文件中的同名参数将被覆盖,导致访问到的值可能不是预期的值。
329 0
|
Python
python中argparse库,在B文件中如何调取A文件中的args参数,通过保存文件的方式
在 Python 中,可以使用 argparse 库和 pickle 标准库来实现在不同的 Python 文件之间传递参数。假设我们有两个 Python 文件 A.py 和 B.py,其中 A.py 中定义了一些命令行参数并对其进行了解析,我们想要在 B.py 中调用这些参数,可以按照以下步骤进行操作:
315 0
|
机器学习/深度学习 数据挖掘 数据处理
5个例子比较Python Pandas 和R data.table
5个例子比较Python Pandas 和R data.table
146 0
5个例子比较Python Pandas 和R data.table
|
索引 Python
Python基础教程(第二版)例子程序__getitem__函数
Python基础教程(第二版)例子程序__getitem__函数
134 2