【Python函数和类2/6】函数的参数

目录

目标

为函数设置参数

传递实参

关键字实参

关键字实参的顺序

位置实参

常见错误

缺少实参

位置实参的顺序

默认值形参

参数的优先级

默认值形参的位置

总结


目标

        上篇博客中,我们在定义函数时,使用了空的括号。这表示它不需要任何信息就能完成相应的功能。

        实际上,我们还可以在括号内传入一些东西,使函数的功能变得更加灵活。而括号内传入的东西,就是我们今天将要学习的函数的参数。

为函数设置参数

        如图,我们在定义函数和调用函数时,通过传入参数的方式,可以控制输出的结果的差异性

代码示例

# 定义一个函数sayWelcome,传入参数discount
def sayWelcome(discount):print("欢迎光临")print(f"商品一律{discount}")# 调用函数,并传入参数"7.8折"
sayWelcome("7.8折")

第2行,定义函数时,在括号内指定了一个变量discount。

第7行,调用函数时,传入了具体的值"7.8折"。

形参

形参是定义函数时,括号内指定的变量名。形参本质就是“变量名”,用于接收具体的数据。

实参

实参是调用函数时,括号内设置的数据。实参本质就是“数据”,调用函数时,会把这个数据传递给形参。

传递实参

        当然,如果我们想要函数接收更多的数据时,还可以在定义函数时,设置多个形参。与之对应,调用函数时就需要多个实参来传递数据。而向函数传递实参的方式有很多,这里我们介绍两种:关键字实参位置实参

关键字实参

        调用函数时,直接在括号内指名道姓地对形参进行赋值。我们把这种传递实参的方式,称为关键字实参

        第2行,定义函数时,依次传入形参store,discount。第7行,调用函数时,明确指出了各个实参对应的形参。

# 定义一个函数sayWelcome,依次传入形参store,discount
def sayWelcome(store,discount):print(f"欢迎光临{store}")print(f"商品一律{discount}")# 调用函数
sayWelcome(store="水果铺",discount="7.8折")

逗号

 一个逗号,用来分隔多个参数。

关键字实参

调用函数时,使用 形参=实参 的方式传递数据。这里的store="水果铺",表示将"水果铺"传递给形参store。

关键字实参的顺序

        使用关键字参数时,因为我们已经明确地指出了各个实参对应的形参。所以,在函数调用时,关键字实参的顺序无关紧要,只要给形参赋值相同的实参,结果都是等效的。

位置实参

        关键字实参的优点就是能指名道姓地给形参传递数据。但是每次调用函数时,都需要重新输入形参名,稍微有一点麻烦。那么,有没有什么更方便的调用方法呢?实际上,我们还可以使用位置实参的方式来传递数据。

        第2行,定义函数时,依次传入形参store,discount。第7行,调用函数时,按照位置顺序依次将实参处的数据,传递给形参处的变量名。

# 定义一个函数sayWelcome,依次传入形参store,discount
def sayWelcome(store,discount):print(f"欢迎光临{store}")print(f"商品一律{discount}")# 调用函数
sayWelcome("水果铺","7.8折")

位置实参

调用函数时,传入的实参为具体的数据。这里的"水果铺"和"7.8折"将按照位置顺序,依次传递给形参store和discount。

常见错误

缺少实参

        使用位置实参时,实参和形参的个数不一致是比较常见的一个错误。因为,形参会按照位置顺序依次接收实参处的数据。所以,在调用函数时,缺少实参会导致程序报错

位置实参的顺序

        位置实参的顺序很重要,如果指定错误,结果可能会出乎意料。如图,第二次调用函数时,最后会输出:狗有一只小明。

默认值形参

        使用关键字实参和位置实参来给形参传递数据时,都必须保证实参和形参的个数相同。实际上,有些形参不一定需要接收实参的数据,我们可以提前给它们设置一个默认的值。

        举个例子,我们经常将圆周率的值近似为3.14。所以,我们可以在定义函数时,直接给参数pi设置了默认值3.14。

        定义一个函数getArea,用于计算圆的面积并输出。第2行,定义函数时,给形参pi设置为了3.14第7行,调用函数getArea,只设置了实参数据为2。      

# 定义一个函数getArea,依次传入形参radius和pi,并设置pi为3.14
def getArea(radius, pi=3.14):area = pi * radius * radiusprint(f"半径为{radius}的圆,面积约为{area}")# 调用函数,设置实参为2
getArea(2)

默认值形参

定义函数时,已经被复赋值的形参,我们称之为默认值形参。

参数的优先级

        调用函数时,如果给默认值形参提供了实参值,那么该形参将优先使用实参值。如图,形参pi会优先使用接收的实参值3.14159,而非默认值3.14。

默认值形参的位置

        注意,在定义函数时,定义形参的顺序是:先写非默认的形参,后写默认值形参。也就是说,默认值形参只能放在非默认值形参的后面,否则会出现报错。可以这么理解:调用函数时,程序不知道数据2到底是用于修改pi的默认值,还是传递给radius。

总结

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

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

相关文章

课堂练习:环境体验——1、 Linux 文件目录

任务描述 欢迎进行Linux世界,当你下载、安装了某个Linux发行版,体验了Linux桌面并安装了一些你喜爱和需要的软件之后,应该去了解下Linux真正的魅力所在:命令行。 每一个Linux命令其实就是一个程序,借助这些命令&#…

uniapp 使用命令行创建vue3 ts 项目

命令行创建 uni-app 项目: vue3 ts 版 npx degit dcloudio/uni-preset-vue#vite-ts 项目名称注意 Vue3/Vite版要求 node 版本^14.18.0 || >16.0.0 如果下载失败,请去gitee下载 https://gitee.com/dcloud/uni-preset-vue/repository/archive/vite-ts…

ES学习日记(五)-------插件head安装

接上回,必要的git和node已经装完了,现在开始装head 回到es集群项目里找到plugins(插件文件夹下), 存在安装在plugins启动es报错的情况,报错信息如图一,解决方案就是换个目录,不要放在plugin目录下 git clone https://github.com/mobz/elasticsearch-head.git 打开远程登陆,默…

【微服务】Sentinel(流量控制)

文章目录 1.基本介绍1.Sentinel是什么2.Sentinel主要特性3.Sentinel核心功能1.流量控制2.熔断降级3.消息削峰填谷 4.Sentinel两个组成部分 2.Sentinel控制台显示1.需求分析2.下载3.运行1.进入cmd2.输入java -jar sentinel-dashboard-1.8.0.jar3.查看默认端口8080 4.访问1.账号和…

同元软控专业模型库系列——机械篇

01 引言 卫星太阳帆在轨展开、C919大飞机起飞降落、机器人自主行走、汽车自如转向飞驰......在航天、航空、工业机械、车辆、船舶等众多行业中,我们可以看到各种机械应用的身影。 近些年,随着装备数字化和人工智能技术的迅速发展,世界装备制…

【61-80】计算机网络基础知识(非常详细)从零基础入门到精通,看完这一篇就够了

【61-80】计算机网络基础知识(非常详细)从零基础入门到精通,看完这一篇就够了 以下是本文参考的资料 欢迎大家查收原版 本版本仅作个人笔记使用61、 四次挥手相关内容62、挥手为什么需要四次?63、2MSL等待状态?64、四次…

硬件10、从网站获取封装

百度搜索IC封装网或者网址https://www.iclib.com/ 搜索想要的器件,直接下载他的原理图库和封装库

【单调栈】【网格】【柱图面积】85. 最大矩形

作者推荐 视频算法专题 本文涉及的基础知识点 单调栈分类、封装和总结 网格 LeetCode85. 最大矩形 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例 1: 输入:…

【氮化镓】GaN器件中关态应力诱导的损伤定位

概括总结: 这项研究通过低频1/f噪声测量方法,探究了在关态(OFF-state)应力作用下,AlGaN/GaN高电子迁移率晶体管(HEMTs)中由应力引起的损伤的定位。研究中结合了电致发光(EL&#xf…

基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)

基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化) Hive介绍: Hive是建立在Hadoop之上的数据仓库基础架构,它提供了类似于SQL的语言&…

ClamAV:Linux服务器杀毒扫描工具

Clam AntiVirus(ClamAV)是免费而且开放源代码的防毒软件,软件与病毒码的更新皆由社群免费发布。ClamAV在命令行下运行,它不将杀毒作为主要功能,默认只能查出系统内的病毒,但是无法清除。需要用户自行对病毒…

实验2:CLI的使用与IOS基本命令

1、实验目的 通过本实验可以掌握: CLI的各种工作模式个CLI各种编辑命令“?” 和【Tab】键使用方法IOS基本命令网络设备访问限制查看设备的相关信息 2、实验拓扑 CLI的使用与IOS基本命令使用拓扑如下图所示。 3、实验步骤 (1)CLI模式的切…