当前位置: 首页 > news >正文

day14:01函数参数的使用

一、形参与实参介绍

【形参】:在定义函数阶段定义的参数称之为形式参数,简称形参,相当于变量名

def func(x, y):  # x=1,y=2print(x, y)

【实参】:在调用函数阶段传入的值称之为实际参数,简称实参,相当于变量值

func(1,2)

【形参与实参的关系】:
1、在调用阶段,实参(变量值)会绑定给形参(变量名)
2、这种绑定关系只能在函数体内使用
3、实参与形参的绑定关系在函数调用时生效,函数调用结束后解除绑定关系

实参是传入的值,但值可以是以下形式
形式一:

func(1,2)

形式二:

a=1
b=2
func(a,b)

形式三:

func(int('1'),2)
func(func1(1,2,),func2(2,3),333)

二、形参与实参的具体使用

2.1 位置形参与位置实参介绍

【位置参数】:按照从左到右的顺序依次定义的参数称之为位置参数,包括位置形参位置实参

【位置形参】:在函数定义阶段,按照从左到右的顺序直接定义的“变量名”
【特点】:必须被传值,多一个不行少一个也不行

'''错误案例示范'''def func(x,y):print(x,y)
func(1,2,3)  # TypeError: func() takes 2 positional arguments but 3 were given
func(1,)     #  TypeError: func() missing 1 required positional argument: 'y'

【位置实参】:在函数调用阶段, 按照从左到有的顺序依次传入的“值”
【特点】:按照顺序与形参一一对应

def func(x, y):print(x, y)func(1, 2)   # 结果: 1 2
func(2, 1)   # 结果: 2 1

2.2 关键字参数

【关键字实参】:在函数调用阶段,按照key=value的形式传入的值
【特点】:指名道姓给某个形参传值,可以完全不参照顺序

'''通过明确指定参数名的方式来传递参数值'''def func(x,y):print(x,y)func(y=2,x=1)  # 结果:1 2
func(1,2)     # 结果:1 2

2.3 混合使用(强调)

1、位置实参必须放在关键字实参前

def func(x,y):print(x,y)func(1,y=2) # 结果:1 2
func(y=2,1)  #结果:SyntaxError: positional argument follows keyword argument#位置实参跟在了关键字实参后面导致错误

2、不能为同一个形参重复传值

def func(x,y):print(x,y)func(1,y=2,x=3)    # TypeError: func() got multiple values for argument 'x'
func(1,2,x=3,y=4)  # TypeError: func() got multiple values for argument 'x'

2.4 默认参数

【默认形参】:在定义函数阶段,就已经被赋值的形参,称之为默认参数
【特点】:在定义阶段就已经被赋值,意味着在调用阶段可以不用为其赋值

'''默认参数是指在函数定义时,为参数指定的一个默认值。如果在函数调用时没有为这些参数提供值,则自动使用这些默认值。'''
def func(x,y=3):print(x,y)func(x=1)   # 1 3
func(x=1,y=44444)  # 1 44444

2.5 总结:位置形参、位置实参、关键字参数和默认参数的区别

请注意,这里的“可省略性”是指调用函数时是否可以省略某些参数。对于位置形参和位置实参来说,它们通常是成对出现的,即调用时必须为每一个位置形参提供一个位置实参(除非形参有默认值)。然而,在提到“可省略性”时,我们更多是在考虑函数定义中的默认参数和函数调用时是否使用了关键字参数来跳过某些参数。

另外,“*args”是Python中的一个特殊语法,用于在函数调用时接收任意数量的位置实参,并将它们作为一个元组传递给函数。这里只是为了说明位置实参的灵活性而提及,并不直接属于位置形参、位置实参、关键字参数或默认参数的范畴。

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/280fa00d489c438ea0358dea920276d

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 浅析JWT原理及牛客出现过的相关面试题
  • 可以打印小票的进销存软件怎么选?
  • 获取三数之和
  • SpringCloud之@FeignClient()注解的使用方式
  • 互联网摸鱼日报(2024-07-26)
  • 2种常用的取消word文档”打开密码“方法
  • 网络安全在2024好入行吗?
  • 前端系列-9 Vue3生命周期和computed和watch
  • 全国区块链职业技能大赛样题第9套后端源码
  • Hive环境搭建(Mysql数据库)
  • 【C语言】指针大小知多少 ?一场探寻C语言深处的冒险 !
  • Kubernetes 面试题及答案整理,最新面试题
  • Scrapy框架中,如何有效地管理和维护爬虫的日志记录?
  • 非线性校正算法在红外测温中的应用
  • Java-Swing开发-001组件
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • Electron入门介绍
  • Facebook AccountKit 接入的坑点
  • HTML-表单
  • Idea+maven+scala构建包并在spark on yarn 运行
  • IP路由与转发
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JavaScript标准库系列——Math对象和Date对象(二)
  • java取消线程实例
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • maven工程打包jar以及java jar命令的classpath使用
  • October CMS - 快速入门 9 Images And Galleries
  • React-Native - 收藏集 - 掘金
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 百度小程序遇到的问题
  • 基于游标的分页接口实现
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 我建了一个叫Hello World的项目
  • 新手搭建网站的主要流程
  • 字符串匹配基础上
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​configparser --- 配置文件解析器​
  • ​人工智能书单(数学基础篇)
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (Note)C++中的继承方式
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (二)原生js案例之数码时钟计时
  • (分布式缓存)Redis分片集群
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (转)详解PHP处理密码的几种方式
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)