在定义函数的时候如果你不知道该函数在使用的时候要接收多少的实参怎么办?

好在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 传递任意数量的实参的更多相关文章

  1. python传递任意数量的实参

    1.传递任意的实参 def make(*test):#带*号 print(test) make("one")#传递一个实参 make("one","t ...

  2. 【Python】向函数传递任意数量的实参

    传递任意数量的实参 有时候,你预先不知道函数需要接受多少个实参,好在Python允许函数从调用语句中收集任意数量的实参 def get_letter(*letters): for i in lette ...

  3. 函数的学习3——传递任意数量的实参&将函数存储在模块——参考Python编程从入门到实践

    传递任意数量的实参 形参前加一个 * ,Python会创建一个已形参为名的空元组,将所有收到的值都放到这个元组中: def make_pizza(*toppings): print("\nM ...

  4. 传递任意数量的实参*parameter&使用任意数量的关键字实参**parameter

    1.*形参名(*parameter) 有时候我们不知道知道函数需要接受多少个实参,所以我们可以在形参名前加一个*,是让python创建一个名为parameter的空元组,并将收到的所有值都封装到这个元 ...

  5. python_传递任意数量的实参

    '''def name(*args): #python创建一个空元组,将收到的所有值都封装在这个元组中 """打印所有姓名""" for i ...

  6. [ActionScript3.0] 传递任意数量的参数

    function setAgument(a:int,...rest):void{ for(var i:int=0;i<rest.length;i++){ trace(rest[i]); }}se ...

  7. Python 构造一个可接受任意数量参数的函数

    为了能让一个函数接受任意数量的位置参数,可以使用一个* 参数 在这个例子中,rest 是由所有其他位置参数组成的元组.然后我们在代码中把它当成了一个序列来进行后续的计算

  8. Python基础之可接受任意数量参数的函数

    1. 可接受任意数量位置参数的函数 为了能让一个函数接受任意数量的位置参数,可以在参数部分使用“*”. def avg(first, *rest): return (first + sum(rest) ...

  9. 请写一个php函数,可以接受任意数量的参数

    请写一个php函数,可以接受任意数量的参数 这是一道面试题.怎么写这个函数呢? function fun(......) { } ----------------------------------- ...

随机推荐

  1. nginx 启动 + uwsgi + django

    https://www.cnblogs.com/chenice/p/6921727.html https://blog.csdn.net/Aaroun/article/details/78218131

  2. windows下vc编译和debug nginx

    总体来说,各个步骤以及版本参考官方文档http://nginx.org/en/docs/howto_build_on_win32.html一点没错,有些细节没说清楚. To build nginx: ...

  3. 【题解】Luogu P4344 [SHOI2015]脑洞治疗仪

    原题传送门:P4344 [SHOI2015]脑洞治疗仪 前置芝士:珂朵莉树 窝博客里对珂朵莉树的介绍 没什么好说的自己看看吧 珂朵莉树好题啊 我一开始一直Re65 后来重构代码就ac了,或许是rp问题 ...

  4. SQLServer和MySql的区别总结

    SqlServer支持like '%'+'87'+'%' 拼接字符串  但MySql里不支持,只能用CONCAT('%','87','%')拼接,否则异常 1.递归函数的区别类别表CREATE TAB ...

  5. (2编写网络)自己动手,编写神经网络程序,解决Mnist问题,并网络化部署

    基于<神经网络和深度学习>这本绝好的教材提供的相关资料和代码,我们自己动手编写"随机取样的梯度下降神经网络".为了更好地说明问题,我们先从简单的开始: 1.sigmod ...

  6. centos7之安装wordpress

    wordpress安装教程如下: mysql安装可以参考我的博客园Centos构建Java环境:https://www.cnblogs.com/youcong/p/9118753.html 1.安装a ...

  7. How to install Maven on Windows

    To install Apache Maven on Windows, you just need to download the Maven’s zip file, and Unzip it to ...

  8. CentOS7 安装git服务器

    在CentOS7系统中安装git服务器有两种方法,分别为yum安装和下载git安装包手动安装,这篇文章只有下载git安装包手动安装方法. 方法一:使用yum安装 暂无 方法二:下载git安装包手动安装 ...

  9. What are the differences between Flyweight and Object Pool patterns?

    What are the differences between Flyweight and Object Pool patterns? They differ in the way they are ...

  10. GPIO实验之c语言

    上一章节进行实验使用的是汇编进行编程的,本次实验是使用c语言进行编写的. (1)点亮一个led灯   1)启动文件:    crt.S   .text   .global _start   _star ...