`
dacoolbaby
  • 浏览: 1256068 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Python tips 什么是*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=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)即可创建一个字典了。

 

 

 

 

分享到:
评论

相关推荐

    Python可变参数*args和**kwargs用法实例小结

    主要介绍了Python可变参数*args和**kwargs用法,结合实例形式总结分析了Python中可变参数*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的详细解释与理解

    Python中*args和**kwargs的区别详解

    一、*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

    **kwargs:表示的就是形参中按照关键字传值把多余的传值以字典的方式呈现 主要是 用来表示函数接收可变长度的关键字参数列表作为函数的输入。  *args: 就是以元组的形式来呈现多余的参数,接受非关键字的参数 ...

    Python *args和**kwargs用法实例解析

    一、*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,也可以是别的,但是官方不建议...

    Python函数中*args和**kwargs来传递变长参数的用法

    双星号形式(**kwargs)用来传递键值可变参数列表。 下面的例子,传递了一个固定位置参数和两个变长参数。 def test_var_args(farg, *args): print formal arg:, farg for arg in args: print another arg:, arg ...

    用实例说明python的*args和**kwargs用法

    先来看一个例子:复制代码 代码如下:>>> def foo(*args, **kwargs): print ‘args =’, args print ‘kwargs = ‘, kwargs print ‘———————–‘  >>> if __name__ == ‘__main__’: foo(1, 2, 3, 4) ...

    lambda_kwargs_args:当您需要重新学习lambda函数,** kwargs和* args时,可以使用此仓库,也可以用于了解这些pythonic功能!

    lambda,** kwargs和* args 当您需要重新学习lambda functions , **kwargs和*args时,可以使用此repo,也可以用来了解这些pythonic功能! 用 :red_heart: 通过mmtmn

    对Python3 * 和 ** 运算符详解

    *args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成 *args 和 **...

    对python中的*args与**kwgs的含义与作用详解

    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函数进阶

    使⽤ `*args`(元组) 和 `**kwargs` (字典)来调⽤函数 使用`*args`非关键字可变参数方式 # 以元祖方式传递 nums = (1, 2, 3) 使用`**kwargs`关键字可变参数方式 # 以字典方式传递 kwargs = { "arg1...

    Python进阶教程 Python各知识领域高级操作教程 进阶操作教程 共26个章节 共103页.pdf

    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 ...

    Python星号*与**用法分析

    本文实例分析了Python星号*与**用法。分享给大家供大家参考,具体如下: 1. 加了星号(*)的变量名会存放所有未命名的变量参数,不能存放dict,否则报错。 如: def multiple(arg, *args): print arg: , arg #...

    Python基础教程:函数参数和注解.pdf

    Python基础教程:函数参数和注解 四种参数 Python函数func定义如下: def func(first, *args, second="Hello World", **kwargs): print(first) print(args) print(second) print(kwargs) func("lisi", "san", py=...

Global site tag (gtag.js) - Google Analytics