python:动态参数*args

动态参数

  顾名思义,动态参数就是传入的参数的个数是动态的,可以是1个、2个到任意个,还可以是0个。在不需要的时候,你完全可以忽略动态函数,不用给它传递任何值。

Python的动态参数有两种,分别是*args**kwargs,这里面的关键是一个和两个星号的区别,而不是argskwargs在名字上的区别,实际上你可以使用*any**whatever的方式。但就如self一样,默认大家都使用*args**kwargs

注意:动态参数,必须放在所有的位置参数和默认参数后面!

def func(name, age, sex='male', *args, **kwargs):pass

*args

一个星号表示接收任意个参数。调用时,会将实际参数打包成一个元组传入形式参数。如果参数是个列表,会将整个列表当做一个参数传入。例如:

 

def func(*args):"""*表示接收任意个数量的参数,调用时会将实际参数打包为一个元组传入实参:param args::return:"""print argsfor i in args:print ifunc({'name': 'kobe'}, 123, 'hello', ['a', 'b', 'c'])

 

运行结果:

({'name': 'kobe'}, 123, 'hello', ['a', 'b', 'c'])
{'name': 'kobe'}
123
hello
['a', 'b', 'c']

可以看到,先打印了args参数,是一个元组,再分别打印了传入的每个参数。

有时候我们传入一个列表,本意是希望将列表中的所有元素都当做参数传递进去,这里直接将['a', 'b', 'c']看做一个整体了,怎么办?

其实只需要在调用时前面加一个*号就能实现将列表中的每个元素传递进去了。

其实不光列表,任何序列类型数据对象,比如字符串、元组都可以通过这种方式将内部元素逐一作为参数,传递给函数。而字典,则会将所有的key逐一传递进去。

def func(*args):"""*表示接收任意个数量的参数,调用时会将实际参数打包为一个元组传入实参:param args::return:"""for i in args:print ifunc(*['a', 'b', 'c'])

输出结果:

a
b
c

特别的,调用时只能有一个参数前添加*号,且必须放在最后面

def func(*args):"""*表示接收任意个数量的参数,调用时会将实际参数打包为一个元组传入实参:param args::return:"""for i in args:print ifunc(123, 'hello', ['a', 'b', 'c'], *{'name': 'kobe', 'age': 41})

输出:将字典的key值作为参数传入了

123
hello
['a', 'b', 'c']
age
name

 

转载于:https://www.cnblogs.com/gcgc/p/11426478.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.5. Ticket

过程 3.4. Ticket 使用方法 New Ticket 新建Ticket, Ticket 可以理解为任务。 将Ticket 分配给团队成员 受到Ticket后,一定要更改Ticket 为 accept , 这时在View Tickets 中将会看到该Ticket已经分配, 编码过程 这里有一个特别的规定&…

Python操作Mysql实例代码教程在线版(查询手册)_python

实例1、取得MYSQL的版本在windows环境下安装mysql模块用于python开发MySQL-python Windows下EXE安装文件下载 复制代码 代码如下:# -*- coding: UTF-8 -*- #安装MYSQL DB for pythonimport MySQLdb as mdb con None try: #连接mysql的方法:connect(ip,user,pass…

批判性思维_为什么批判性思维技能对数据科学家至关重要

批判性思维As Alexander Pope said, to err is human. By that metric, who is more human than us data scientists? We devise wrong hypotheses constantly and then spend time working on them just to find out how wrong we were.正如亚历山大波普(Alexander Pope)所说…

leetcode 1143. 最长公共子序列(dp)

给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以…

【Spark】SparkStreaming-Kafka-Redis-集成-基础参考资料

SparkStreaming-Kafka-Redis-集成-基础参考资料 Overview - Spark 2.2.0 DocumentationSpark Streaming Kafka Integration Guide - Spark 2.2.0 DocumentationSpark Streaming Kafka Integration Guide (Kafka broker version 0.8.2.1 or higher) - Spark 2.2.0 Documentat…

Manjaro 17 搭建 redis 4.0.1 集群服务

安装Redis在Linux环境中 这里我们用的是manjaro一个小众一些的发行版 我选用的是manjaro 17 KDE 如果你已经安装好了manjaro 那么你需要准备一个redis.tar.gz包 这里我选用的是截至目前最新的redis 4.0.1版本 我们可以在官网进行下载 https://redis.io/download选择Stable &…

了解如何使用Flutter构建iOS和Android应用

Learn Flutter in this full course from Nick Manning (of fluttercrashcourse.com). Flutter is Google’s multi-platform mobile development framework used to create apps for Android and iOS using the Dart programming language. 可以从fluttercrashcourse.com的Nic…

leetcode 781. 森林中的兔子(hashmap)

森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 answers 数组里。 返回森林中兔子的最少数量。 示例: 输入: answers [1, 1, 2] 输出: 5 解释: 两只回答了 “1” 的兔…

快速排序简便记_建立和测试股票交易策略的快速简便方法

快速排序简便记Note from Towards Data Science’s editors: While we allow independent authors to publish articles in accordance with our rules and guidelines, we do not endorse each author’s contribution. You should not rely on an author’s works without se…

Java学习第1天:序言,基础及配置tomcat

所谓是福不是祸,是祸躲不过,到底还是回到java的阵地上来。既然它这么热,那就学学它,现在这件事已经提上议事日程,也已经开始。 今天做的事: 泛泛的翻了几本书,敲了一些练习代码,比如…

robot:List变量的使用注意点

创建list类型变量,两种方式,建议使用Create List关键字 使用该列表变量时需要变为${}方式,切记切记! 转载于:https://www.cnblogs.com/gcgc/p/11429482.html

python基础教程(十一)

迭代器 本节进行迭代器的讨论。只讨论一个特殊方法---- __iter__ ,这个方法是迭代器规则的基础。 迭代器规则 迭代的意思是重复做一些事很多次---就像在循环中做的那样。__iter__ 方法返回一个迭代器,所谓迭代器就是具有next方法的对象,在调…

编程需要数学知识吗_编程需要了解数学吗?

编程需要数学知识吗Does programming require knowing math? Not necessarily. 编程需要了解数学吗? 不必要。 When I say that, Im mostly talking about Web Development, not working with graphics or specific applications that require advanced math. 当我…

美剧迷失_迷失(机器)翻译

美剧迷失Machine translation doesn’t generate as much excitement as other emerging areas in NLP these days, in part because consumer-facing services like Google Translate have been around since April 2006.如今,机器翻译并没有像其他NLP新兴领域那样…

mysql 1449 : The user specified as a definer ('usertest'@'%') does not exist 解决方法 (grant 授予权限)...

从服务器上迁移数据库到本地localhost 执行 函数 时报错, mysql 1449 : The user specified as a definer (usertest%) does not exist 经查,是权限问题(其中usertest是服务器上数据库的登录名),解决办法: 授权给 u…

初识数据结构与算法

1、什么是数据结构? a、数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。 b、数据结构是计算机存储、组织数据的方式,数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常…

产品经理思考

1.分析QQ与微信的区别,包含其中存在的问题,并给出解决方案。 2.如果你设计一款基于音乐的高品质内容的社交软件,给说出这么设计的原因。 3.请说出一款APP的的看法,指出其中不合理的地方,并说明原因(APP如果…

shopify 开发_播客第57集:从Shopify的作家到开发人员,与Adam Hollett一起

shopify 开发On this weeks episode of the freeCodeCamp podcast, Quincy interviews Adam Hollett. Hes a software developer at Shopify in Ottawa, Canada.在本周的freeCodeCamp播客节目中,Quincy采访了Adam Hollett。 他是加拿大渥太华Shopify的软件开发人员。…

机器学习中决策树的随机森林_决策树和随机森林在机器学习中的使用

机器学习中决策树的随机森林机器学习 (Machine Learning) Machine learning is an application of artificial intelligence that provides systems the ability to automatically learn and improve from experience without being explicitly programmed. The 3 main categor…

pycharm 快捷键

编辑: ctrl D   快速复制粘贴一行 ctrl E   快速删除一行 ctrl Z   撤销上一步命令或输入 end  快速跳到行末 shift enter  快速换行(尤其适用于光标不在行末时) ctrl F  查找 ctrl R  替换 转载于:https://www.cnblogs.com/Chris-0…