可变参数

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

植物大战僵尸杂交版破解C++实现

文章目录 前言准备工作&#xff1a;基地址与偏移UI界面设计和绑定项目模板总览图生成与实现信号处理1、阳光值更新:BTN12、三种钱币值更新:BTN2-BTN43、冷却刷新:BTN54、锁定阳光&#xff1a;check15、无冷却&#xff1a;check26、OnTimer&#xff08;&#xff09;和OnClose&am…

Linux上传文件

在finalshell中连接的Linux系统中&#xff0c;输入命令rz然后选择windows中的文件即可。

透视茅台股东大会三大关键词:稳定、竞争力、创新

执笔 | 尼 奥 编辑 | 扬 灵 “让我们携手共同致力于茅台的稳定、健康、可持续发展。”上任刚满一个月的贵州茅台党委书记、董事长张德芹&#xff0c;在5月29日的贵州茅台酒股份有限公司2023年度股东大会上迎来首秀。 张德芹在40多分钟脱稿演讲与30多分钟互动环节中&#x…

TiDB学习9:Ti Cloud简介

目录 1. 为什么选择TiDB 2. 多租户 3. TiDB架构 4. 什么是TiDB Cloud 5. TiDB Cloud Provider Region 6. TiDB Cloud 入门 6.1 在浏览器中打开TiDB Cloud 6.2 创建您的账户 6.3 Developer Tier 与Dedicated Tier 6.3.1 Developer Tier 6.3.2 Dedicated Tier 6.3.2.…

项目纪实 | 版本升级操作get!GreatDB分布式升级过程详解

某客户项目现场&#xff0c;因其业务系统要用到数据库新版本中的功能特性&#xff0c;因此考虑升级现有数据库版本。在升级之前&#xff0c;万里数据库项目团队帮助客户在本地测试环境构造了相同的基础版本&#xff0c;导入部分生产数据&#xff0c;尽量复刻生产环境进行升级&a…

【NVM】nvm常用命令,切换node版本命令

nvm常用的命令&#xff0c;切换node版本命令 nvm 查看支持安装的node版本 nvm list available nvm安装指定版本node nvm install 版本号 例如&#xff1a;nvm install 10.24.1 nvm查看本机安装所有node版本 nvm list nvm切换node版本 nvm use 10.24.1 检测当前node版本 node -…

玄机平台应急响应—Linux日志分析

1、前言 啥是日志呢&#xff0c;日志就是字面意思&#xff0c;用来记录你干了啥事情。日志大体可以分为网站日志和系统日志&#xff0c;网站日志呢就是记录哪个用户在哪里什么时候干了啥事&#xff0c;以及其它的与网站相关的事情。系统日志呢&#xff0c;就是记录你的电脑系统…

动态分配函数参数用二级指针的作用

文章目录 前言一、案例 前言 在一些情况下&#xff0c;我们需要在函数内部动态地分配内存来存储结构体&#xff0c;并且需要在函数外部访问该结构体。在这种情况下&#xff0c;可以使用二级指针作为函数参数来实现动态内存分配&#xff0c;并且在函数外部使用指针访问结构体。…

12V转19V4A升压恒压WT3207

12V转19V4A升压恒压WT3207 WT3207是款高效的PWM升压控制器&#xff0c;采用SO-8封装设计。该控制器经过优化以适应低输入电压应用&#xff0c;具有从5V至36V的广泛输入电压范围&#xff0c;适用于需要提高12V、15V和19V系统电压的场合&#xff0c;特别是对于两节或三节锂离子电…

Apache Doris 基础 -- 数据表设计(数据模型)

Versions: 2.1 1、模型概览 本主题从逻辑角度介绍了Doris中的数据模型&#xff0c;以便您可以在不同的业务场景中更好地使用Doris。 基本概念 本文主要从逻辑的角度描述Doris的数据模型&#xff0c;旨在帮助用户在不同的场景更好地利用Doris。 在Doris中&#xff0c;数据在…

GEE 10m近实时 LULC 数据集Dynamic World

Google Earth Engine 和 Dynamic World Google 利用其地球引擎&#xff08;Earth Engine&#xff09;和人工智能&#xff08;AI&#xff09;平台技术&#xff0c;推出了 Dynamic World 数据库&#xff0c;能够提供接近实时的全球土地环境数据。Dynamic World 是基于 Google Ear…

【Gradle】Gradle的本地安装和使用

目录 1、Gradle 的安装 2、集成 IntelliJ IDEA 3、使用 Gradle Gradle 完全兼容 Maven 和 Ivy 仓库&#xff0c;你可以从中检索依赖也可以发布你的文件到仓库中&#xff0c;Gradle 提供转换器能把 Maven 的构建逻辑转换成 Gradle 的构建脚本。 1、Gradle 的安装 Gradle 的…

卷积网络迁移学习:实现思想与TensorFlow实践

摘要&#xff1a;迁移学习是一种利用已有知识来改善新任务学习性能的方法。 在深度学习中&#xff0c;迁移学习通过迁移卷积网络&#xff08;CNN&#xff09;的预训练权重&#xff0c;实现了在新领域或任务上的高效学习。 下面我将详细介绍迁移学习的概念、实现思想&#xff0c…

【Qt】Qt界面美化指南:深入理解QSS样式表的应用与实践

文章目录 前言&#xff1a;1. 背景介绍2. 基本语法3. QSS 设置方式3.1. 设置全局样式3.2. 从文件加载样式表3.3. 使用 Qt Designer 编辑样式 总结&#xff1a; 前言&#xff1a; 在当今这个视觉至上的时代&#xff0c;用户界面&#xff08;UI&#xff09;的设计对于任何软件产…

嵌入式Linux复制剪切删除指令详解

指令操作 1. cp 复制指令 a. 用法&#xff1a;cp [ 选项 ] [ 源文件或目录 ] [ 目标文件或目录 ]&#xff1b; b. 用途&#xff1a;用于复制文件或目录&#xff1b; c. 通常情况下&#xff0c;复制的都不是空文件夹&#xff0c;所以直接使用 cp 复制空文件会失败&#xff0…

[ROS 系列学习教程] 建模与仿真 - Xacro 语法

ROS 系列学习教程(总目录) 本文目录 一、属性与属性块二、数学表达式三、宏3.1 宏的基本使用3.2 属性块做为宏的入参3.3 任意数量元素做为宏的入参3.4 指定多个块元素的处理顺序3.5 宏嵌套3.6 默认参数3.7 局部属性 四、Rospack 命令五、包含其他 xacro 文件六、条件语句七、YA…

C#中接口的显式实现与隐式实现及其相关应用案例

C#中接口的显式实现与隐式实现 最近在学习演化一款游戏项目框架时候&#xff0c;框架作者巧妙使用接口中方法的显式实现来变相对接口中方法进行“密封”&#xff0c;增加实现接口的类访问方法的“成本”。 接口的显式实现和隐式实现&#xff1a; 先定义一个接口&#xff0c;接口…

KotlinConf 2024:深入了解Kotlin Multiplatform (KMP)

KotlinConf 2024&#xff1a;深入了解Kotlin Multiplatform (KMP) 在近期的Google I/O大会上&#xff0c;我们推荐了Kotlin Multiplatform (KMP)用于跨移动、网页、服务器和桌面平台共享业务逻辑&#xff0c;并在Google Workspace中采用了KMP。紧接着&#xff0c;KotlinConf 2…

豆包浏览器插件会造成code标签内容无法正常显示

启用状态&#xff1a;页面的代码会显示不正常 禁用后&#xff0c;正常显示 害得我重置浏览器设置&#xff0c;一个个测试

CentOS7.9部署安装OpenGauss 5.0.2企业版

1、更新系统: yum update -y 2、更改主机名&#xff1a; hostnamectl set-hostname opendb01 3、关闭透明页&#xff1a; echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag# 加入开机自启动 echo …