Python 传递任意数量的实参
在定义函数的时候如果你不知道该函数在使用的时候要接收多少的实参怎么办?
好在python提供了可以接收任意数量的实参的操作。
# def sandwitch(*ingredents):
# print("The ingredient of the sandwitch including")
# for ingredent in ingredents:
# print(ingredent)
# sandwitch('cabbage','prock','beef')
# sandwitch('mutton','fish')
*ingredents 是定义一个名为 ingredents 的空元组,然后在函数被调用的时候将接收到的所有值(实参)放进该元组中,由此一来便实现了传递任意数量的实参的操作。 注:
当位置实参和任意数量的实参相结合使用时,要将接纳任意数量的实参的形参(元组)要放在最后面,因为Python会先匹配位置实参,然后将剩下的实参收集到最后一个形参(元组)中。
比如上面那个例子,还要加上尺寸size的话,函数的定义就应该如下
def sandwitch(size,*ingredents):
此外Python还提供了“使用任意数量的关键字实参 ”,简单地说就是可以将一个字典序作为形参。如下一个例子
def build_porfile(first,last,**user_info):
profile={}
profile['first_name']=first
profile['lase_name']=last
for key,value in user_info.items():
profile[key]=value
return profile user_info=build_porfile('albert','einstein',location='prinecton',field='physics') print(user_info)
其中形参中的 **user_info 定义的是一个空字典,并将在函数调用时收到的所有的 key和value封装到该字典中。
或者可以这样子理解,在接收任意数量的实参的定义中只需存入某一个值,所以用的是 一个“*” (元组),在任意数量的关键字实参时用到的是字典,需要存的是两个值 key和 value,所以是 double star。
以上的内容学习自《Python:从入门到实践》,挺好的一本书,可以作为基础入门的学习资料
Python 传递任意数量的实参的更多相关文章
- python传递任意数量的实参
1.传递任意的实参 def make(*test):#带*号 print(test) make("one")#传递一个实参 make("one","t ...
- 【Python】向函数传递任意数量的实参
传递任意数量的实参 有时候,你预先不知道函数需要接受多少个实参,好在Python允许函数从调用语句中收集任意数量的实参 def get_letter(*letters): for i in lette ...
- 函数的学习3——传递任意数量的实参&将函数存储在模块——参考Python编程从入门到实践
传递任意数量的实参 形参前加一个 * ,Python会创建一个已形参为名的空元组,将所有收到的值都放到这个元组中: def make_pizza(*toppings): print("\nM ...
- 传递任意数量的实参*parameter&使用任意数量的关键字实参**parameter
1.*形参名(*parameter) 有时候我们不知道知道函数需要接受多少个实参,所以我们可以在形参名前加一个*,是让python创建一个名为parameter的空元组,并将收到的所有值都封装到这个元 ...
- python_传递任意数量的实参
'''def name(*args): #python创建一个空元组,将收到的所有值都封装在这个元组中 """打印所有姓名""" for i ...
- [ActionScript3.0] 传递任意数量的参数
function setAgument(a:int,...rest):void{ for(var i:int=0;i<rest.length;i++){ trace(rest[i]); }}se ...
- Python 构造一个可接受任意数量参数的函数
为了能让一个函数接受任意数量的位置参数,可以使用一个* 参数 在这个例子中,rest 是由所有其他位置参数组成的元组.然后我们在代码中把它当成了一个序列来进行后续的计算
- Python基础之可接受任意数量参数的函数
1. 可接受任意数量位置参数的函数 为了能让一个函数接受任意数量的位置参数,可以在参数部分使用“*”. def avg(first, *rest): return (first + sum(rest) ...
- 请写一个php函数,可以接受任意数量的参数
请写一个php函数,可以接受任意数量的参数 这是一道面试题.怎么写这个函数呢? function fun(......) { } ----------------------------------- ...
随机推荐
- RTSP 与 RTMP 协议 (转)
源: RTMP协议与RTSP协议比较 RTSP 与 RTMP 协议 RTSP Spec中文版(1-11) RTSP协议 流媒体之rtsp篇 H264视频传输.编解码----RTSP协议
- Cannot convert value of type [java.lang.String] to required type [javax.sql.DataSource] for property 'dataSource': no matching editors or conversion strategy found
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFa ...
- mycat水平分表
和垂直分库不同,水平分表,是将那些io频繁,且数据量大的表进行水平切分. 基本的配置和垂直分库一样,我们需要改的就是我们的 schema.xml和rule.xml文件配置(server.xml不用做任 ...
- php 使用fileupload上传多张图片,压缩包
test.php <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- Solr基本操作
/update 使用/update进行索引维护,进入Solr管理界面SolrCore下的Document下: 我们进行更新操作可以用json和xml多种格式,这里以xml格式为例说明.先来看看界面上的 ...
- unknown variable 'log_bin_basename'
今天在处理一问题时,在my.cnf中设置了log_bin_basename=/DATA/log-bin,在启动时报unknown variable 'log_bin_basename' 经查mysql ...
- k8s device plugin
基本概念入门: Device Manager Proposal Device plugin offical Doc(中文) device-plugins offical Doc(En) Go thro ...
- 【RMAN】使用RMAN的 Compressed Backupsets备份压缩技术 (转载)
1.Oracle参考文档中关于RMAN备份压缩的描述1)关于如何通过调整RMAN参数启用取消备份压缩功能http://download.oracle.com/docs/cd/B19306_01/bac ...
- phpstudy手动把mysql数据库从5.5.56升级到5.6.41
查看mysql版本: mysql> select version(); 1.关闭mysql,把原来的D:/phpStudy/PHPTutorial/mysql改名为MySQL_5.5.53作为备 ...
- struts2 action中字符串转json对象出错 java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
commons-lang包有错,要么是引入错误,要么是没引入. 报不同错误,引入不同包. commons-beanutils-1.8.0.jar不加这个包 java.lang.NoClassDefFo ...