可变参数

自学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指数。

图标 (35)

  实例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()函数后,将显示以下运行结果:

[绮梦] 的星座是:水瓶座

[冷伊一] 的星座是:射手座

[香凝] 的星座是:双鱼座

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/19945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IT运维保障企业网络畅通

目录 一、网络维护的基础知识 1.1 定期检查硬件设备 1.2 软件更新与补丁管理 二、网络优化技巧 2.1 带宽管理 2.2 流量分析与监控 2.3 网络拓扑优化 三、快速故障排除的技巧 3.1 制定故障排除流程 3.2 使用故障排除工具 3.3 定期培训与演练 在当今数字化时代&#x…

自然语言处理中的BERT模型深度剖析

自然语言处理&#xff08;NLP&#xff09;是人工智能领域的一个重要分支&#xff0c;它致力于让计算机理解和生成人类语言。近年来&#xff0c;BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;模型的出现&#xff0c;极大地推动了NLP领域…

【Linux】Linux环境基础开发工具_3

文章目录 四、Linux环境基础开发工具2. vim3. gcc和g动静态库的理解 未完待续 四、Linux环境基础开发工具 2. vim vim 怎么批量化注释呢&#xff1f;最简单的方法就是在注释开头和结尾输入 /* 或 */ 。当然也可以使用快捷键&#xff1a; Ctrl v 按 hjkl 光标移动进行区域选择…

【LeetCode】38.外观数列

外观数列 题目描述&#xff1a; 「外观数列」是一个数位字符串序列&#xff0c;由递归公式定义&#xff1a; countAndSay(1) "1"countAndSay(n) 是 countAndSay(n-1) 的行程长度编码。 行程长度编码&#xff08;RLE&#xff09;是一种字符串压缩方法&#xff0c…

Spring Cloud应用框架:Nacos作为服务注册中心和配置中心

Nacos 是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。在Spring Cloud生态系统中&#xff0c;Nacos可以替代Eureka作为服务注册中心&#xff0c;同时也可以作为配置中心。所以我们这里使用Nacos作为Spring Cloud应用的服务注册中心和配置中心。 使用Nacos的好处 …

3.location的写法

location的写法 一、location的写法1、 精确匹配2、~ 以正则表达式匹配请求&#xff0c;区分大小写3、~* 以正则匹配请求&#xff0c;不区分大小写4、^~ 不以正则的方式匹配请求 二、stub_status模块显示工作状态三、url地址重写 rewrite模块1、语法2、针对项目结构有变化3、网…

LeetCode374猜数字大小

题目描述 我们正在玩猜数字游戏。猜数字游戏的规则如下&#xff1a;我会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。如果你猜错了&#xff0c;我会告诉你&#xff0c;我选出的数字比你猜测的数字大了还是小了。你可以通过调用一个预先定义好的接口 int guess(int n…

民国漫画杂志《时代漫画》第33期.PDF

时代漫画33.PDF: https://url03.ctfile.com/f/1779803-1248635648-d8235b?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

JVM优化之垃圾收集器

JVM优化之垃圾收集器 Serial收集器Parallel Scavenge收集器ParNew收集器 如果说垃圾收集算法是内存回收的方法论&#xff0c;那么垃圾收集器就是内存回收的具体实现。 没有最好的垃圾收集器&#xff0c;只有根据具体应用场景选择适合自己的垃圾收集器。 Serial收集器 #使用方…

apache大数据各组件部署搭建(超级详细)

apache大数据数仓各组件部署搭建 第一章 环境准备 1. 机器规划 准备3台服务器用于集群部署,系统建议CentOS7+,2核8G内存 172.19.195.228 hadoop101 172.19.195.229 hadoop102 172.19.195.230 hadoop103 [root@hadoop101 ~]# cat /etc/redhat-release CentOS Linux rele…

飞腾+FPGA多U多串全国产工控主机

飞腾多U多串工控主机基于国产化飞腾高性能8核D2000处理器平台的国产自主可控解决方案&#xff0c;搭载国产化固件,支持UOS、银河麒麟等国产操作系统&#xff0c;满足金融系统安全运算需求&#xff0c;实现从硬件、操作系统到应用的完全国产、自主、可控&#xff0c;是国产金融信…

基于51单片机多功能防盗报警proteus仿真( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机多功能防盗报警系统 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单&&下载链接 基于51单片机多功能防盗报警系统( proteus仿真程序设计报告原理图讲解视频&#xff09; 仿真图proteus8.9及以上…

Spring boot 随笔 1 DatasourceInitializer

0. 为啥感觉升级了 win11 之后&#xff0c;电脑像是刚买回来的&#xff0c;很快 这篇加餐完全是一个意外&#xff1a;时隔两年半&#xff0c;再看 Springboot-quartz-starter 集成实现的时候&#xff0c;不知道为啥我的h2 在应用启动的时候&#xff0c;不能自动创建quartz相关…

智能化改造给企业带来的实际效果

1. 提高生产效率&#xff1a;通过自动化和智能化的生产线&#xff0c;减少人工操作&#xff0c;显著提升单位时间内的生产量。 2. 提升产品质量&#xff1a;智能化改造通过精确控制生产过程&#xff0c;减少人为错误&#xff0c;提高产品的一致性和可靠性。 3. 降低生产成本&am…

设计师竞品分析全攻略:高效指南!

在我们的设计工作中&#xff0c;竞争产品的分析非常重要。通过对市场上竞争产品的分析&#xff0c;设计师可以在短时间内快速了解其产品在整个市场中的定位。 同时&#xff0c;竞争产品分析也为设计师提供了可量化的评价标准&#xff0c;避免了过于主观的观点&#xff0c;帮助…

管道液位传感器怎么接线

如今&#xff0c;随着科技智能化的发展&#xff0c;检测液位的方法也越来越多&#xff0c;管道液位传感器是检测水管缺水的传感器&#xff0c;利用光学原理&#xff0c;通过液体在水和空气中的折射不同来判断传感器位置液位的变化&#xff0c;管道液位传感器怎么接线&#xff1…

计算机组成原理-----实验1

实 验 报 告 实验一 基本运算器实验 1、实验目的 &#xff08;一&#xff09;了解运算器的组成结构&#xff1b; &#xff08;二&#xff09; 掌握运算器的工作原理&#xff1b; &#xff08;三&#xff09;熟悉运算器的数据传送通路&#xff1b; &#xff08;四&#xff09;按…

如何搭建B2B2C商城系统?开发语言、功能扩展、优势分析

如今&#xff0c;越来越多的企业意识到单靠第三方电商平台不足以快速实现品牌曝光和销售增加&#xff0c;相反还有诸多限制。 因此&#xff0c;搭建一个B2B2C商城也就成为企业发展业务的首选&#xff0c;既可以满足自营和商家入驻的需求&#xff0c;功能操作又灵活&#xff0c…

IDEA 安装BPMN插件-Activiti BPMN visualizer

IDEA安装BPMN插件 idea 18版本之前idea 18版本之后安装插件 推荐使用 Activiti BPMN visualizer插件注意 创建bpmn文件使用可视化面板 在可视化面板中右键可创建各种节点每个节点上都有连线 删除 设置的按钮 保存图片 idea 18版本之前 可以通过搜索插件actiBPMN直接安装 idea…

【LeetCode算法】第101题:对称二叉树

目录 一、题目描述 二、初次解答 三、官方解法 四、总结 一、题目描述 二、初次解答 1. 思路&#xff1a;递归判定左子树和右子树是否对称。用一个新函数sym来递归判定左子树和右子树是否对称。该函数细节&#xff1a;判定当前传入的两个根节点是否为空&#xff0c;若均为空…