python传递任意数量的实参

传递任意数量的实参

有时候预先不知道函数需要接受多少个实参,但Python允许函数从语句中收集任意数量的实参。
比如我们定义一个函数show来展示一个人的爱好
代码中只有一个形参*habits,但不论提供多少实参,这个形参都可以接受

def show(*habits):
    print(habits)

show('sing', 'dance', 'rap', 'basketball')

输出

('sing', 'dance', 'rap', 'basketball')

形参名*habits中的星号*让Python创建一个名为tup的空元组,并将所有收到的值都封装到这个元组中
注意,即使函数只收到一个值也是

def show(*habits):
    print(habits)

show('sing')

输出

('sing')

我们可以通过循环来遍历

def show(*habits):
    for i in habits:
        print(i)

show('sing', 'dance', 'rap', 'basketball')

输出

sing
dance
rap
basketball

同时使用位置实参和任意数量实参

如果要让函数接受不同类型的实参,必须把接受任意数量实参的形参放在最后
Python将先匹配位置实参和关键字实参,再将剩余的实参收集到最后一个形参中
我们在前面的函数中还需要一个表示年龄的实参,必须将该形参放到形参*habits之前

def show(age, *habits):
    print(age)
    for i in habits:
        print(i)

show(20, 'sing', 'dance', 'rap', 'basketball')

输出

20
sing
dance
rap
basketball

使用任意数量的关键字实参

还有些时候,需要接受任意数量的实参,但预先不知道传给函数的是什么样的信息,这种情况下,可以将函数能够接受任意数量的键 — 值对——调用语句提供了多少就接受多少
函数show中可以接受年龄,还可以接受任意数量的关键字实参

def show(age, **user_info):
    print(age)
    print(user_info)
    for key, value in user_info.items():
        print(key + ": " + value)

show(20, habit = 'basketball', name = 'gzy')

输出

20
{'habit': 'basketball', 'name': 'gzy'}
habit: basketball
name: gzy

形参**user_info中的两个星号让Python创建一个名为user_info的空字典
调用这个函数时,不管额外提供了多少个键 — 值对,它都能正确地处理。

原文地址:https://www.cnblogs.com/lykkk/p/11470198.html

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

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

Python 传递任意数量的实参

在定义函数的时候如果你不知道该函数在使用的时候要接收多少的实参怎么办? 好在python提供了可以接收任意数量的实参的操作. # def sandwitch(*ingredents): # print("The ingredient of the sandwitch including") # for ingredent in ingredents: # print(ingredent) # sandwitch('cabbage','prock','beef') # sandwitch

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