自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501
在Python中,还可以定义可变参数。可变参数也称不定长参数,即传入函数中的实际参数可以是任意多个。
定义可变参数时,主要有两种形式:一种是*parameter,另一种是**parameter。
(1)*parameter
这种形式表示接收任意多个实际参数并将其放到一个元组中。例如,定义一个函数,让其可以接收任意多个实际参数,代码如下:
def printcoffee(*coffeename): # 定义输出我喜欢的咖啡名称的函数
print('\n我喜欢的咖啡有:')
for item in coffeename:
print(item) # 输出咖啡名称
调用3次上面的函数,分别指定不同的实际参数,代码如下:
printcoffee('蓝山')
printcoffee('蓝山', '卡布奇诺', '土耳其', '巴西', '哥伦比亚')
printcoffee('蓝山', '卡布奇诺', '曼特宁', '摩卡')
执行结果如图11所示。
图11 让函数具有可变参数
如果想要使用一个已经存在的列表作为函数的可变参数,可以在列表的名称前加“*”。例如下面的代码:
param = ['蓝山', '卡布奇诺', '土耳其'] # 定义一个列表
printcoffee(*param) # 通过列表指定函数的可变参数
通过上面的代码调用printcoffee()函数后,将显示以下运行结果:
我喜欢的咖啡有:
蓝山
卡布奇诺
土耳其
场景模拟:假设某某大学的文艺社团里有多个组合,他们想要计算每个人的BMI指数。
实例03 根据身高、体重计算BMI指数(共享升级版)
在IDLE中创建一个名称为function_bmi_upgrade.py的文件,然后在该文件中定义一个名称为fun_bmi_upgrade的函数,该函数包括一个可变参数,用于指定包括姓名、身高和体重的测试人信息,在该函数中将根据测试人信息计算BMI指数,并输出结果,最后在函数体外定义一个列表,并且将该列表作为fun_bmi_upgrade()函数的参数调用,代码如下:
def fun_bmi_upgrade(*person):
'''功能:根据身高和体重计算BMI指数(共享升级版)
*person:可变参数该参数中需要传递带3个元素的列表,
分别为姓名、身高(单位:米)和体重(单位:千克)
'''
for list_person in person:
for item in list_person:
person = item[0] # 姓名
height = item[1] # 身高(单位:米)
weight = item[2] # 体重(单位:千克)
print("\n" + "="*13,person,"="*13)
print("身高:" + str(height) + "米 \t 体重:" + str(weight) + "千克")
bmi=weight/(height*height) # 用于计算BMI指数,公式为:BMI=体重/身高的平方
print("BMI指数:"+str(bmi)) # 输出BMI指数
# 判断身材是否合理
if bmi<18.5:
print("您的体重过轻 ~@_@~")
if bmi>=18.5 and bmi<24.9:
print("正常范围,注意保持 (-_-)")
if bmi>=24.9 and bmi<29.9:
print("您的体重过重 ~@_@~")
if bmi>=29.9:
print("肥胖 ^@_@^")
# *****************************调用函数*********************************** #
list_w = [('绮梦',1.70,65),('零语',1.78,50),('黛兰',1.72,66)]
list_m = [('梓轩',1.80,75),('冷伊一',1.75,70)]
fun_bmi_upgrade(list_w ,list_m) # 调用函数指定可变参数
运行结果如图12所示。
图12 根据身高、体重计算BMI指数(共享升级版)
(2)**parameter
这种形式表示接收任意多个类似关键字参数一样显式赋值的实际参数,并将其放到一个字典中。例如,定义一个函数,让其可以接收任意多个显式赋值的实际参数,代码如下:
def printsign(**sign): # 定义输出姓名和星座的函数
print() # 输出一个空行
for key, value in sign.items(): # 遍历字典
print("[" + key + "] 的星座是:" + value) # 输出组合后的信息
调用两次printsign()函数,代码如下:
printsign(绮梦='水瓶座', 冷伊一='射手座')
printsign(香凝='双鱼座', 黛兰='双子座', 冷伊一='射手座')
执行结果如下:
[绮梦] 的星座是:水瓶座
[冷伊一] 的星座是:射手座
[香凝] 的星座是:双鱼座
[黛兰] 的星座是:双子座
[冷伊一] 的星座是:射手座
如果想要使用一个已经存在的字典作为函数的可变参数,可以在字典的名称前加“**”。例如下面的代码:
dict1 = {'绮梦': '水瓶座', '冷伊一': '射手座','香凝':'双鱼座'} # 定义一个字典
printsign(**dict1) # 通过字典指定函数的可变参数
通过上面的代码调用printsign()函数后,将显示以下运行结果:
[绮梦] 的星座是:水瓶座
[冷伊一] 的星座是:射手座
[香凝] 的星座是:双鱼座