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:从入门到实践》,挺好的一本书,可以作为基础入门的学习资料

原文地址:https://www.cnblogs.com/Guhongying/p/10010888.html

时间: 2024-07-30 15:47:48

Python 传递任意数量的实参的相关文章

python传递任意数量的实参

传递任意数量的实参 有时候预先不知道函数需要接受多少个实参,但Python允许函数从语句中收集任意数量的实参. 比如我们定义一个函数show来展示一个人的爱好 代码中只有一个形参*habits,但不论提供多少实参,这个形参都可以接受 def show(*habits): print(habits) show('sing', 'dance', 'rap', 'basketball') 输出 ('sing', 'dance', 'rap', 'basketball') 形参名*habits中的星号*

python随笔12(传递任意数量的实参)

有时候,你预先不知道函数需要接受多少个实参,好在python允许函数从调用语句中收集任意数量的实参. 例如,来看一个制作披萨的函数,它需要接受很多的配料,但你无法预先确定顾客要多少种配料.下面函数只有一个形参*toppings,但不管调用语句提供了多少实参,这个形参都将它们统统收入囊中. def make_pizza(*toppings): """打印顾客点的所有配料""" print(toppings) make_pizza('pepperon

Python学习心得(三)函数之任意数量实参、任意数量关键字实参、导入模块中的函数

#!/usr/bin/python # -*- coding:utf-8 -*- ''' 1.传递任意数量的实参 Python允许函数传入任意数量的实参,例如: *messages形参名中的*表示让Python创建一个空的名称为messages的元组,接收传入的所有值 ''' def get_person_message(*messages): concat = '' for message in messages: concat += ' ' + message print "\nShow P

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

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

python中函数定义之实参、形参

一般在函数的定义中,会有一类变量---形参,它是函数完成其工作的一项信息.实参往往是调用函数时传递给函数的信息.我们在调用函数时,将要让函数使用的信息放在括号内.例如定义一个函数def greet_user(username):,在调用greet_user('jeese')中,将实参'jeese'传递给了函数greet_user(),这个值被存储在形参username中. 传递实参有很多种方式,下面了解一下他们. 1.位置实参 在调用函数时,每个实参要与定义中的形参关联起来.最简单的关联方式就是

点星 (。*)表示任意数量的字符(不包括换行符)

点 .表示任意字符,不包括换行符 .\n表示换行符 星 * 表示任意数量 \b 表示单词的开始或结束 \s表示空格 表示数量的还有 + ,? +表示重复一次或更多次 ?表示重复零次或一次 *表示重复零次或更多次 ^表示字符串的开始 $表示字符串的结束 和\b类似. \表示转义字符 \\表示字符\本身.如:c:\\windows 表示c:\windows \(?0\d{2}[) -]?\d{8}. “(”和“)”也是元字符,后面的分组节里会提到,所以在这里需要使用转义. 这个表达式可以匹配几种格式

python从任意文件读取邮件地址输出的代码

如下的资料是关于python从任意文件读取邮件地址输出的代码. # This script takes whatever you throw at stdin and outputs email addresses.# eg. python email_extractor.py < PythonFAQ.html# This script can be used for whatever you want, EXCEPT SPAMMING !import sys,reprint 'n'.join(

从Python传递JSON到JavaScript

OS: Windows 8.1 with update 关键字:Python 3.4,HTML5,JSON,JavaScript 1.LocalServer.py,启动server,打开网页,传递JSON. from threading import Thread import time import webbrowser import http.server import socketserver import json import os port_number = 8000 server

[Android]Activity跳转传递任意类型的数据、Activity为SingleTask时代替StartActivityForResult的解决方案

以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4389674.html 需求:在ActivityA跳转到ActivityB,然后在ActivityB操作完返回数据给ActivityA. 这个很普遍的需求,一般情况是使用startActivityForResult的方式去完成. 但是当ActivityB为SingleTask时,这个方式就无效了.你会发现当你执行startActivityForResult后,o