网站首页 > 技术文章 正文
本章是学习函数里的 收集参数,以及之前的参数的混合使用
1;什么是收集参数,它可以传递更多个实参
# 只有一个形参,但前面加了一个※
# 这就是收集参数,在调用的时候传入实参的时候可以很多个没问题的都可以返回
def make_pizza(*toppings):
'''打印顾客点的所有配料 '''
print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms','green peppers','extra cheese')
def make_pizza(*toppings):
'''概述制作的披萨'''
print('\nMaking a pizza with the following toppings:')
# 遍历 形参*toppings,写到这里的时候实参还没有被填入进去
# 这里的值是局部变量,在局部变量里可以访问全局变量
for topping in toppings:
print(f"-{topping}")
# 下面这些都是全局变量,跳出函数体以外的都是全局变量
make_pizza('pepperoni')
make_pizza('mushrooms','green peppers','extra cheese')
2;结合使用位置实参合任意数量实参 混合使用
写到这里我觉得有必要总结一下:
写在函数体内的是:形参 写在函数体外的是:实参
分类为:
1;位置参数:不加任何符号的
2;关键字参数:在传递实参时指定形参的变量名(a=xxx),位置参数必须在关键字参数前面。
3;默认参数;在函数调用时,如果没有传递实参,则采用默认参数,一般写在形参里,(a=xxx)位置参数必须在默认参数前面
4;收集参数:让客户输入更多参数,用于填入形参,如果收集参数后面还要跟其他参数则建议建议其他参数设置为默认参数,比如print() :收集参数后面跟着都是默参数。
print(*objects,sep='',end='\n',file=sys.stdout,flush=false)
但如果收集参数放在后面问题也不大看看:
# 增加了一个形参
def make_pizza(size,*toppings):
'''概述要制作的披萨'''
print(f'\nMaking a{size}-inch pizza with the following toppings:')
# 循环遍历收集参数的内容
for topping in toppings:
print(f'-{topping}')
make_pizza(16,'pepperoni')
make_pizza(12,'moushrooms','green peppers','extra cheese')
3;使用任意数量的关键字实参;
在定义函数的时候使用**参数 相当于建立一个字典。
# ** 创建一个字典的收集形参;
def build_profile( **user_info):
return user_info
user_profile = build_profile( location='princeton',
field='physics')
# 调用函数
print(user_profile)
# ** 创建一个字典的收集形参;
def build_profile(first, last, **user_info):
"""创建一个字典,其中包含我们知道的有关用户的一切"""
# 字典的名字是user_info
# 形参成为了字典的值,键是'first_name'
user_info['first_name'] = first
user_info['last_name'] = last
# 注意这里返回的是最后的 字典收集参数
return user_info
# 传递实参
user_profile = build_profile('albert', 'einstein',
location='princeton',
field='physics')
# 调用函数
print(user_profile)
# 注意显示的顺序是:先显示字典,因为调用的是字典,
# user_info['first_name'] = first 是添加内容到字典里!! 注意这里
课后题目1:
def smz(*a):
for i in a:
print(f'三明治需要的材料有:{i}')
smz('火腿肉','生菜','烤肉酱','面包片')
课后题目二:
# ** 是创建一个字典;
def build_profile(**user_info):
return user_info
# 传递实参赋值给变量user_profile
user_profile = build_profile(姓='陈',名='二狗',性别='男',爱好='女',年龄=25)
# 调用函数
print(user_profile)
# 这样写就没问题了就OK了,
课后题目三:
def make_car(xinghao,zhizs,**a):
a['车辆名称']=xinghao
a['车辆制造商']=zhizs
return a
car=make_car('宝马','德国',颜色='白色',车辆等级='高级')
print(car)
对前几章的内容复盘:
函数还有一个进阶的内容,这是我个人定义的,就是嗯...有难度的地方:
猜你喜欢
- 2024-10-01 利用神经网络模型检测摄像头上的可疑行为
- 2024-10-01 使用神经网络的自动化特征工程(神经网络的特点及使用场景)
- 2024-10-01 Python基础学习必备的8个最常用的内置函数
- 2024-10-01 利用Click和argparse给你Python程序构建一个优雅的命令行界面
- 2024-10-01 langchain中的LLM模型使用介绍(llvm 分析)
- 2024-10-01 学习Python内置函数(range)来打印数学乘法表
- 2024-10-01 Python 100天 15:print("hello world")茴香豆的写法
- 2024-10-01 python3入门实例一:Hello World(python的hello world程序编写)
- 2024-10-01 python基础篇:讲讲python的内置函数一
- 2024-10-01 Python3中的print函数(python里的print函数)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)