day14:01函数参数的使用

news2024/11/13 12:46:15

一、形参与实参介绍

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

def func(x, y):  # x=1,y=2
    print(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

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

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

相关文章

OpenEuler系统下——k8s离线安装部署

简介 K8S是目前已经是业界最为流行的开源技术框架,但是苦于其学习难度较大,并且初学者在开始的时候需要自己进行安装搭建部署,以供后续的学习使用,但是国内经常会出现无法访问外网的官方网站,导致很多镜像和依赖包无法…

uCore2020 lab1练习一作业

在线环境(无需搭建环境即可复现) 在线实验指导书uCore2020,有些章节无法访问 文章目录 lab1练习一1、操作系统镜像文件ucore.img生成过程init.o等文件的生成过程bin/kernal的生成过程bin/sign的生成过程bin/bootblock的生成过程bin/ucore.i…

搭建AI无人直播插件

在当今的数字时代,直播已成为一种极为流行的内容传播方式,而人工智能(AI)技术的飞速发展更是为直播行业注入了新的活力。 AI无人直播插件,作为这一趋势下的产物,不仅能够实现24小时不间断的直播内容生成,还能根据观众…

SpringCloud Alibaba 微服务(四):Sentinel

目录 前言 一、什么是Sentinel? Sentinel 的主要特性 Sentinel 的开源生态 二、Sentinel的核心功能 三、Sentinel 的主要优势与特性 1、丰富的流控规则 2、完善的熔断降级机制 3、实时监控和控制台 4、多数据源支持 5、扩展性强 四、Sentinel 与 Hystrix…

Redis 序列化 GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer的区别

GenericJackson2JsonRedisSerializer 和 Jackson2JsonRedisSerializer 是 Spring Data Redis 提供的两种基于 Jackson 的 Redis 序列化器。 它们的主要区别在于序列化和反序列化的方式以及适用的场景。 GenericJackson2JsonRedisSerializer 序列化方式:在序列化对…

为Mac配置Alfred

参考资料: Alfred神器使用手册 | louis blogMacOS神器之Alfred workflow概览GitHub - arpir/Alfred-Workflows-Collection: 一些好用的 Alfred Workflow 一、修改快捷键 Spotlight的默认快捷键是Command Space Alfred的默认快捷键是Option Space 可以将Alfred和…

[网络编程】网络编程的基础使用

系列文章目录 1、 初识网络 网络编程套接字 系列文章目录前言一、TCP和UDP协议的引入二、UDP网络编程1.Java中的UDP2.UDP回显代码案例3.UDP网络编程的注意事项 三、TCP网络编程1.TCP回显代码案例2.TCP多线程使用 总结 前言 在学习完基础的网络知识后,完成跨主机通…

关于 OSPF LSA 序列号范围 0x80000001-0x7FFFFFFF 释疑正本清源

注:机翻,未校对。 正本:RFC 2328 OSPF Version 2 中相关解释 April 1998 12.1.6. LS sequence number 12.1.6. 序列号 The sequence number field is a signed 32-bit integer. It is used to detect old and duplicate LSAs. The space …

set,map(java)

前言:要了解set和map,首先需要对搜索树和哈希有一定的了解,才能进一步深入的了解set和map。 1.搜索树 (1)性质: 若它的左子树不为空,则左子树上所有节点值都小于根节点的值。 若它的右子树不…

事件如何驱动图表运行

状态流图如何响应事件 Stateflow图表仅在以循环方式响应事件时执行。 由于图表在单个线程上运行,因此基于事件发生的操作对该事件是原子性的。图表中由事件引起的所有活动都在执行返回到接收事件之前发生的活动之前完成。一旦事件启动了一个操作,除非被…

全网最全程序员接单网站

程序员客栈-领先的程序员自由工作平台-程序员兼职 (proginn.com) 闲鱼 - 闲不住,上闲鱼! (goofish.com) 猪八戒网-品质企业服务 就找猪八戒 (zbj.com) 电鸭社区-专注远程工作招聘交流-远程工作,从电鸭开始 (eleduck.com) 开源众包-百万开发者…

Java台球厅助教教练预约上门到店系统源码

🎱一杆在手,天下我有!台球助教教练预约系统,让球技飙升不是梦🚀 🎯【开篇:台球爱好者的福音来啦!】🎯 还在为找不到合适的台球教练而烦恼吗?或是想要在家就…

代码实践思考:C++和Python

起因 在人工智能工具日益强大的今天 如何更高效的进行代码学习 如何借助智能工具实现代码转换? 是否直接可以使用?为何? 如何实现不同的编程语言之间代码的无损转换? x86与arm C 云课五分钟-02第一个代码复现-终端甜甜圈C-CS…

GEE错误——文件导出的时候出现Error: User memory limit exceeded. (Error code: 3)

错误简介 在试图将我的表导出到资产文件夹,但出现了内存错误。我不知道我做错了什么。相同的脚本适用于其他年份。文件导出的时候出现Error: User memory limit exceeded. (Error code: 3) 函数 reduceToVectors(reducer, geometry, scale, geometryType, eightConnected,…

雪花算法的一些问题解析

前言 最近做项目,有些老旧项目,需要生成分布式唯一ID,不允许重复,此时如果要对其他中间件和数据库依赖小,那么就需要一套固定的ID生成规则,雪花算法就正当合适,当时Twitter就是用来存储数据库I…

服务器主机安全有多重要

一、什么是主机安全 主机安全,作为维护计算机系统核心安全的基石,旨在全面捍卫硬件与软件免受任何未经授权的侵扰、篡改、数据泄露等安全挑战。这一过程不仅聚焦于数据存储与处理的保密性、完整性及可用性,还深入至硬件构造、固件层、以及系…

利用C++11的异步操作实现一个线程池

利用C11的异步操作实现一个线程池 利用C11的异步操作实现一个线程池 介绍关于一些代码细节的解释测试 介绍 基于线程池执行任务的时候,入口函数内部执行逻辑是固定的,因此选择std::packaged_task加上std::future的组合来实现。 具体使用可以见我上一…

2025年第7届图像处理和机器视觉国际会议 (IPMV 2025)即将召开!

2025年第7届图像处理和机器视觉国际会议 (IPMV 2025)将于2025年1月10日-12日在中国香港举行。图像处理和机器视觉作为当代信息技术领域的重要分支,不仅推动了人工智能技术的飞速发展,也为各行各业带来了革命性的变革。本次会议旨在汇聚全球图像处理和机器…

极致的灵活度满足工程美学:用Vue Flow绘制一个完美流程图

目录 极致的灵活度满足工程美学:用Vue Flow绘制一个完美流程图 一、环境要求 二、初识Vue Flow 2.1、安装Vue Flow 2.2、Vue Flow构成 2.3、一个小坑 2.4、入门案例 三、Vue Flow优秀的自定义功能 3.1、引入 3.2、节点与连线的自定义 ①打样(…

MySQL - 通过SQL语句导出数据到CSV文件

在 MySQL 中,可以使用 SELECT ... INTO OUTFILE 语句将查询结果导出为 CSV 文件,然后再将 CSV 文件转换为 Excel 格式。以下是一个示例: SELECT column1, column2, column3 INTO OUTFILE /path/to/file.csv FIELDS TERMINATED BY , ENCLO…