函数传递任意数量的实参

  • *形参名,形参名中的星号让python创建了一个空元组,并将收到的所有值都封装到这个元组中
# 案例 *toppings 形参名中的星号让python创建了一个空元组,并将收到的所有值都封装到这个元组中
def make_pizza(*toppings):
'''打印顾客点的所有配料'''
print(toppings) make_pizza('pepperoni')
make_pizza('mushrooms','green peopers','extra cheese')
('pepperoni',)
('mushrooms', 'green peopers', 'extra cheese')
def make_pizza(*toppings):
"""概述要做的比萨"""
print("\nMaking a pizza with the following toppings: ")
for topping in toppings:
print("- " + topping)
make_pizza('pepperoni')
make_pizza('mushrooms','green peppers','extra cheese')
Making a pizza with the following toppings:
- pepperoni Making a pizza with the following toppings:
- mushrooms
- green peppers
- extra cheese

结合使用位置实参和任意数量实参

  • 让函数接收不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后,python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中
def make_pizza(size, *toppings):
print("\nMaking a " + str(size) + "-inch pizza with the following toppings:")
for topping in toppings:
print("- " + topping)
make_pizza(16, 'pepperoni')
make_pizza(12,'mushrooms','green peppers','extra cheese')
Making a 16-inch pizza with the following toppings:
- pepperoni Making a 12-inch pizza with the following toppings:
- mushrooms
- green peppers
- extra cheese

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

  • 两个星号创建了一个空字典,将收到的所有名称-值对都封装到这个字典中
# 案例
def build_profile(first,last, **user_info):
'''创建一个字典,其中包含我们知道的有关用户的一切'''
profile = {}
profile['first_name'] = first
profile['last_name'] = last
for key,value in user_info.items():
profile[key] = value
return profile
user_profile = build_profile('albert','einstein',
location = 'princeton',
field = 'physics')
print(user_profile)
{'first_name': 'albert', 'last_name': 'einstein', 'location': 'princeton', 'field': 'physics'}

练习

# 1.三明治
# 编写一个函数,它接受顾客要在三明治中添加的一系列食材。这个函数只有一个形参(它收集函数调用中提供的所有食材),并打印一条消息,对顾客
# 点的三明治进行概述。调用这个函数三次,每次都提供不同数量的实参
def add_sandwich(*foods):
print("\n I'll make you a great sandwich: ")
for food in foods:
print("....adding " + food + " to your sandwich.")
print("Your sandwich is ready!") add_sandwich('roast beef', 'cheddar cheese', 'lettuce', 'honey dijon')
add_sandwich('turkey', 'apple slices', 'honey mustard')
add_sandwich('peanut butter', 'strawberry jam')
 I'll make you a great sandwich:
....adding roast beef to your sandwich.
....adding cheddar cheese to your sandwich.
....adding lettuce to your sandwich.
....adding honey dijon to your sandwich.
Your sandwich is ready! I'll make you a great sandwich:
....adding turkey to your sandwich.
....adding apple slices to your sandwich.
....adding honey mustard to your sandwich.
Your sandwich is ready! I'll make you a great sandwich:
....adding peanut butter to your sandwich.
....adding strawberry jam to your sandwich.
Your sandwich is ready!
# 2.用户简介
# 在其中调用 build_profile() 来创建有关你的简介;调用这个函数时,指定你的名和姓,以及三个描述你的键 - 值对。
def build_profile(first,last, **user_info):
'''创建一个字典,其中包含我们知道的有关用户的一切'''
profile = {}
profile['first_name'] = first
profile['last_name'] = last
for key,value in user_info.items():
profile[key] = value
return profile
user_profile = build_profile('li','yege',
height = '170cm',
weight = '70kg',
hobby = 'basketball',
)
print(user_profile)
{'first_name': 'li', 'last_name': 'yege', 'height': '170cm', 'weight': '70kg', 'hobby': 'basketball'}
# 3.汽车
# 编写一个函数,将一辆汽车的信息存储在一个字典中。这个函数总是接受制造商和型号,还接受任意数量的关键字实参。这样调用这个函数:提供必不可
# 少的信息,以及两个名称 — 值对,如颜色和选装配件。这个函数必须能够像下面这样进行调用
def build_cars(made_address, model, **user_info):
cars = {}
cars['address'] = made_address
cars['model'] = model
for key,value in user_info.items():
cars[key] = value
print(cars)
build_cars('china', 'big',color = 'blue', name = 'changcheng')
{'address': 'china', 'model': 'big', 'color': 'blue', 'name': 'changcheng'}

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

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

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

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

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

  3. Python 传递任意数量的实参

    在定义函数的时候如果你不知道该函数在使用的时候要接收多少的实参怎么办? 好在python提供了可以接收任意数量的实参的操作. # def sandwitch(*ingredents): # print ...

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

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

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

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

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

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

  7. Python函数返回不定数量的值

    Python的函数是可以return多个值的,但其本质上还是返回单个值,只是利用了tuple的自动打包,将多个值打包成单个tuple返回. 使用代码验证: def func_a(): return 1 ...

  8. python 函数传递参数的多种方法

    python中函数根据是否有返回值可以分为四种:无参数无返回值,无参数有返回值,有参数无返回值,有参数有返回值. Python中函数传递参数的形式主要有以下五种,分别为位置传递,关键字传递,默认值传递 ...

  9. 小知识:Python函数传递变长

    先来实践一把: def f1(*args): print(args) f1(1,2,3,4) 得出:(1, 2, 3, 4) ----- 是一个元祖 Part 1: *args可以传递任意多的数,ar ...

  10. python 函数传递可变参数的用法

    可变参数 在Python函数中,还可以定义可变参数.顾名思义,可变参数就是传入的参数个数是可变的,可以是1个.2个到任意个,还可以是0个. 我们以数学题为例子,给定一组数字a,b,c……,请计算a2 ...

随机推荐

  1. 【node打包缺包】Error: Can't walk dependency graph: Cannot find module 'jquery' from

    问题: 在使用node打包时,终端报错提示Error: Can't walk dependency graph: Cannot find module 'jquery' from/.../ 这个提示缺 ...

  2. sql server数据库的带返回值的存储和函数的基础使用

    准备基本的数据 create table test_table ( id int identity(0,1), name varchar(20), age int, book_name varchar ...

  3. JSON常见用法

    https://blog.csdn.net/weixin_43631296/article/details/105253434

  4. 【BUUCTF]ACTF2020 新生赛Exec1write up

    根据题目分析,俺们要用ping命令! 打开靶机,输入127.0.0.1尝试提交,直接出现无过滤: 尝试管道符执行命令,常见管道符: 1.|(就是按位或),直接执行|后面的语句 2.||(就是逻辑或), ...

  5. Python项目案例开发从入门到实战-1.2 Python语法基础

    书籍信息 1.2 Python语法基础 1.2.1 Python数据类型 数值类型 整型(int):浮点型(float):复数(complex),以j或J结尾,如2+3j 字符串 布尔类型 空值,用N ...

  6. Android进度表示

    在连接上数据库之后,一切都变得简单了呢! 开心,很轻松地就能够将APP里面的相关内容写完啦! 尝试了好久的连接Mysql数据库,最后还是没有成功: 虽然Android studio里面自带的SQLit ...

  7. 3.错误代码C4996

    3.错误代码C4996 错误 C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_s inst ...

  8. Google Protobuf 编解码

    更多内容,前往个人博客 Protobuf 全称:Google Protocol Buffers,由谷歌开源而来,经谷歌内部测试使用.它将数据结构以 .proto 文件进行描述,通过代码生成工具可以生成 ...

  9. 数仓如何进行表级控制analyze?

    摘要: 介绍如何设置采样大小和表级控制analyze. 本文分享自华为云社区<GaussDB(DWS) 如何表级控制analyze>,作者:leapdb. 一.控制采样大小 [设置全局采样 ...

  10. 汽车制造工艺 2.5D 可视化组态监控 | 图扑软件

    前言 随着世界经济的不断发展,汽车作为一个如今随处可见的物体,从大体上概括是由四大部分组成:发动机.底盘.车身.电气系统.看似简单的几个名词组件,其内部却是由无数的细小零件构成,一辆汽车更是由上万个微 ...