Hi,伙计们。我发现Python新手们在理解*args和**kwargs这两个魔法变量时都有些困难。他们到底是什么?首先,我先告诉大家一个事实,完整地写*args和**kwargs是不必要的,我们可以只写*和**。你也可以写*var和**vars。写*args和**kwargs只是一个大家都遵守的习惯。那现在让我们从*args讲起。

*args的使用

*args和**kwargs通常使用在函数定义里。*args and **kwargs允许你给函数传不定数量的参数。“不定量”意味着你在定义函数的时候不知道调用者会传递几个参数进来。*args能够接收不定量的非关键字参数。下面这个例子能够说明这一点

这个例子产生下面的结果

这样应该就解释的比较清楚了,接下来我们来说明**kwargs

**kwargs的使用

**kwargs允许你传递不定量个关键字参数。如果你需要在函数中定义不定量个命名参数,那么你就要使用**kwargs了。下面是一个例子来演示这种用法:

这个例子中我们处理了一些关键字参数。这是**kwargs的基本用法,可以看出**kwargs很有用。接下来让我们说明使用*args和**kwargs来在调用函数时,给函数传递“一个列表的参数”,或者“一个字典的参数”。

使用*args和**kwargs来调用一个函数

下面我们介绍如何使用*args和**kwargs来调用一个函数,假设你有这样一个函数。

下面我们使用*args和**kwargs来给这个函数传递参数,我们可以这样做:

*args和**kwargs以及普通参数的使用顺序

如果你想同时使用这三种参数,那么它们之间的顺序是

到此为止*args和**kwargs的用法就讲完了,希望对你有所帮助

声明:本文来自Python程序员,由python部落翻译

Python里*arg 和**kwargs的作用的更多相关文章

  1. Python里的*args and **kwargs

    http://book.pythontips.com/en/latest/args_and_kwargs.html https://stackoverflow.com/questions/339483 ...

  2. 【Python—参数】*arg与**kwargs参数的用法

    在python中,这两个是python中的可变参数,*arg表示任意多个无名参数,类型为tuple;**kwargs表示关键字参数,为dict. # *允许你传入0个或任意个参数,这些可变参数在函数调 ...

  3. python *arg和**kwargs的区别

    转载自:https://www.cnblogs.com/yunguoxiaoqiao/p/7626992.html 一.*args的使用方法 *args 用来将参数打包成tuple给函数体调用 举个栗 ...

  4. Python基础-*args和**kwargs魔法变量

    在学习Python时,总会遇到*args和**kwargs这两个魔法变量,那么它们到底是什么? 首先,并不是必须写成*args和**kwargs.只有变量前面的*(星号)才是必须的,你也可以写成*va ...

  5. Python中*args 和**kwargs的用法

    当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值.还是直接来代码吧,废话少说[python] def fun_var_args(far ...

  6. python里的Join函数

    用法是将数组里的每个元素用字符连接起来 import string string.join(["aaaa", "bbb"]) 或者: from string i ...

  7. python中__init__.py文件的作用

    问题 在执行models.py时,报ImportError:No module named transwarp.db的错误,但明明transwarp下就有db.py文件,路径也没有错误.真是想不通.后 ...

  8. Python中*args和**kwargs的区别

    (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 中秋的夜,微凉,但却始终看不见月亮. 我想,它一定是害羞了,悄悄的躲到了乌云的后面. 嗯,就是这样,我真是太TM机智了. 正 ...

  9. python可变参数*args, **kwargs

    python可变参数*args, **kwargs def foo(* args, ** kwargs): print ' args = ',  args print ' kwargs = ',  k ...

随机推荐

  1. web端功能测试总结(二)

    一.输入框测试 在web测试中,我们经常遇到这种输入框的测试,输入框测试看似简单,实际上包含了很多的测试基本的方法,思考逻辑,下面就是我总结出来的一些注意点: 1)验证输入输出信息的一致性 2)输入框 ...

  2. FutureTask的使用

    package org.zln.thread.pool.ft;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.ut ...

  3. SeaJS入门篇一 怎么使用query

    研究了2个多小时,终于搞定引入jq 1.写个html页面 <h1>ddddddddd</h1> <script src='/Scripts/dist/sea.js'> ...

  4. ReactNative官方中文文档0.21

    整理了一份ReactNative0.21中文文档,提供给需要的reactnative爱好者.ReactNative0.21中文文档.chm  百度盘下载:ReactNative0.21中文文档 来源: ...

  5. CSS中不为人知Zoom属性的使用介绍(IE私有属性)

    其实Zoom属性是IE浏览器的专有属性,Firefox等浏览器不支持.它可以设置或检索对象的缩放比例.除此之外,它还有其他一些小作用,比如触发ie的hasLayout属性,清除浮动.清除margin的 ...

  6. 2016-2017-2 《Java程序设计》预备作业2总结

    2016-2017-2 <Java程序设计>预备作业2总结 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把.」 在对计算机系的学生情况的调查中,我说: 最近 ...

  7. MyISAM 和InnoDB 的区别.(存储,索引, 事务, 锁)

    MyISAM类型的表强调的是性能,但是不支持事务.及外部键等高级功能. MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的 ...

  8. 查询当前Database下所有Datatable及所有记录数

    DECLARE @TableName varchar(); CREATE TABLE #GetRecordingTempTable([id] [INT] IDENTITY(,) NOT NULL, [ ...

  9. zookeeper启动后没有相关进程

    查看状态报错,报错,百度硕士nc问题,让看.out文件,但是这哥文件是空的,那就看log 016-12-15 14:08:19,355 [myid:] - INFO [main:QuorumPeer$ ...

  10. iOS提交后申请加急审核

    链接:https://developer.apple.com/appstore/contact/appreviewteam/index.html 在i would like to里选择加急审核 然后填 ...