可变参数

自学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,一经查实,立即删除!

相关文章

【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…

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相关…

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

在我们的设计工作中&#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;若均为空…

C/S模型测试

1 1.1代码示例 #include<stdio.h> #include<stdio.h>#include <sys/types.h> /* See NOTES */ #include <sys/socket.h>#include <netinet/in.h> #include <netinet/ip.h> /* superset of previous */ #include <arpa/inet.…

推荐系统三十六式学习笔记:02|个性化推荐系统有哪些绕不开的经典问题?

目录 推荐系统的问题模式评分预测行为预测 几个常见顽疾1、冷启动问题2、探索与利用问题安全问题 总结 推荐系统的问题模式 推荐系统的使命是为用户和物品建立连接&#xff0c;建立的方式是提前找出哪些隐藏的连接呈现给用户&#xff0c;这是一个预测问题&#xff1b;所以推荐…

IMU状态预积分代码实现 —— IMU状态预积分类

IMU状态预积分代码实现 —— IMU状态预积分类 实现IMU状态预积分类 实现IMU状态预积分类 首先&#xff0c;实现预积分自身的结构。一个预积分类应该存储一下数据&#xff1a; 预积分的观测量 △ R ~ i j , △ v ~ i j , △ p ~ i j \bigtriangleup \tilde{R} _{ij},\bigtrian…

2020 6.s081——Lab2:system calls

左岸的一座白色环形阶梯 浪人正在用和弦练习忧郁 晨曦下的少女听着吉他旋律 在许愿池边巴洛克式的叹息 ——许愿池的希腊少女 完整代码见&#xff1a;SnowLegend-star/6.s081 at syscall (github.com) System call tracing (moderate) 这个实验要求我们跟踪系统调用。 感觉实…

平衡二叉树的应用举例

AVL 是一种自平衡二叉搜索树&#xff0c;其中任何节点的左右子树的高度之差不能超过 1。 AVL树的特点&#xff1a; 1、它遵循二叉搜索树的一般属性。 2、树的每个子树都是平衡的&#xff0c;即左右子树的高度之差最多为1。 3、当插入新节点时&#xff0c;树会自我平衡。因此…