专栏首页BigYoung小站Python中 *args 和 **kwargs的用法

Python中 *args 和 **kwargs的用法

总是会在一些代码中看到*args**kwargs,一直不知道具体怎么用,今天整理了一下:

首先语法是***,但是用*args**kwargs只是规定,为了使用方便,但是并没有强制使用它们.

当你不确定你的函数里将要传递多少参数时你可以用*args。例如,它可以传递任意数量的参数:

>>> def print_everything(*args):
        for count, thing in enumerate(args):
...         print '{0}. {1}'.format(count, thing)
...
>>> print_everything('apple', 'banana', 'cabbage')
0. apple
1. banana
2. cabbage

相似的,**kwargs允许你使用没有事先定义的参数名:

>>> def table_things(**kwargs):
...     for name, value in kwargs.items():
...         print '{0} = {1}'.format(name, value)
...
>>> table_things(apple = 'fruit', cabbage = 'vegetable')
cabbage = vegetable
apple = fruit

你也可以混着用。命名参数首先获得参数值,然后所有的其他参数都传递给*args**kwargs。命名参数在列表的最前端。例如:

def table_things(titlestring, **kwargs)

*args**kwargs可以同时在函数的定义中,但是*args必须在**kwargs前面。

当调用函数时你也可以用***语法。例如:

>>> def print_three_things(a, b, c):
...     print 'a = {0}, b = {1}, c = {2}'.format(a,b,c)
...
>>> mylist = ['aardvark', 'baboon', 'cat']
>>> print_three_things(*mylist)

a = aardvark, b = baboon, c = cat

就像你看到的一样,它可以传递列表(或者元组)的每一项并把它们解包。注意必须与它们在函数里的参数相吻合。当然,你也可以在函数定义或者函数调用时用*

本文分享自微信公众号 - BigYoung小站(bigyoungs),作者:Young文人

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django Models 随机获取指定数量数据方法

    这种方式,是自己定义了一个Models的manager方法,任何一个models都可以使用此方法,具有通用性。

    BigYoung小站
  • 我终于弄懂了Python的装饰器(四)

    如要制作通用装饰器(无论参数如何,您都可以将其应用于任何函数或方法),则只需使用*args, **kwargs:

    BigYoung小站
  • 登录微软账号的Windows电脑如何远程?

    一般情况下,我们都使用的是Windows电脑的本地账户。但是随着Windows 10的推广,现在微软也开始主推微软账号登录Windows电脑了。

    BigYoung小站
  • python学习笔记:*args和**kwargs使用原理?

    一.*args和**kwargs原理  先看个例子: def test(*args,**kwargs): print("args =",args) ...

    用户1679793
  • 函数的不定长参数

    skylark
  • 如何有效控制客户需求膨胀

    在规定时间用有限的资源来保质保量地完成项目,让公司和最终客户都满意是项目组的神圣职责。

    公众号php_pachong
  • 什么是*args和**kwargs?

    可以看到,这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*...

    于小勇
  • Python 拓展之 *args & **kwargs

    我们在前几天的文章中写的函数,它们的参数的个数都是确定的,我们知道世界是不确定的,那么函数的参数当然也有不固定的时候,那么当我们碰到这个问题的时候,该怎么解决呢...

    Rocky0429
  • nodejs搭配phantomjs highcharts后台生成图表

    用户1258909
  • 腾讯回应封杀质疑 腾讯公关总监说了这样一番话

    腾讯回应封杀质疑是怎么回事?腾讯为什么封杀三款新社交app?15日,三款新社交软件发布,分别是王欣的马桶MT、今日头条的多闪、罗某的聊天宝,但上线后全部被微信屏...

    哲洛不闹

扫码关注云+社区

领取腾讯云代金券