【Python】函数进阶(纯干货版)

目录

函数的多返回值

多个参数的传递

缺省参数

不定长参数

位置不定长参数传参举例

关键字不定长参数举例

函数作为参数传递

匿名函数


函数的多返回值

在Python中允许一个函数带回多个返回值,写法是一个return 返回值1,返回值2

在接收的时候同样使用多个变量接收,中间用逗号隔开。

如图

运行结果为1 2,也就是说x和y成功接收了test函数带回的两个返回值。

同时返回值的类型也是不受限制的,比如

运行结果为1 hello

多个参数的传递

在Python中传递参数有三种方式,分别是位置参数,关键字参数,不定长参数,缺省参数。

位置参数:调用函数时根据函数定义的参数位置来传递参数,使用这种传参方式要求传递的参数和定义的参数的顺序及个数必须一致

关键字参数:函数调用时通过“键=值”形式传递参数.使用这种传参方式可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求.同时允许位置参数进行混用,但需注意函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序

缺省参数:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用).

作用: 当调用函数时没有传递参数, 就会使用默认是用缺省参数对应的值.

举个例子

运行结果为

如果在函数定义的时候给形参部分赋值,那么赋的这个值就是所谓的默认参数,比如

运行结果如图,我们并没有传递gender这个参数,因此使用了默认值。当然如果我们不想用默认参数可以向前面传参一样在调用函数的时候给gender传一个值

但需注意,如果想要设置默认参数,只能设置后面的参数为默认参数,允许设置多个参数的默认值,但是他们必须都在后面。

缺省参数

缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用).

作用: 当调用函数时没有传递参数, 就会使用默认是用缺省参数对应的值.

不定长参数

不定长参数也叫可变参数. 用于不确定调用的时候会传递多少个参数(不传参也可以)的场景.不定长参数分为两类,第一类是位置传递的不定长参数,第二类是关键字传递的不定长参数,这两类参数的声明是不一样的。位置不定长参数的声明使用的是*形参名进行声明,关键字不定长参数使用**形参名进行声明,对于位置不定长参数我们在进行传参的时候可以传任意个,Python中规定是使用一个元组来存放所传递的这任意个参数,对于关键字不定长的参数使用字典类型来存放所传递的这任意个参数,通常位置不定长参数的声明形参名我们写成args,即位置不定长参数的声明方式为*args,而关键字不定长参数的声明形参名我们写成kwargs,即关键字不定长参数的声明方式为**kwargs。当然形参名可以起别的名字,这是是一个规范性问题。

作用: 当调用函数时不确定参数个数时, 可以使用不定长参数。

位置不定长参数传参举例

运行结果为:传递的参数是(1, 2, 3, '小明'),参数类型为,可以观察到当我们传入参数args之后,该参数就会以元组的形式存在

关键字不定长参数举例

运行结果为:传递的参数是{'名字': '小明', '年龄': '20'},参数类型为

可以观察到当传入参数kwargs之后,该参数就会以字典的形式存在,传的时候要求参数是k=v的形式,虽然字典要求的元素应该是键值对,但是这里不要与定义字典时候的形式混淆,定义字典的时候所使用的键值对是k:v的形式,但是作为参数传递的时候我们应该传k=v的形式。

函数作为参数传递

在Python中允许函数名直接作为参数传递,这比C语言中的函数传参快捷多了,因为C语言中的函数名传参是要用函数指针来接收的,但是Python中不用,直接传函数名即可。比如

运行结果是:调用fun函数的结果为3

这是因为我们调用fun函数然后传递了三个参数,第一个参数是test_add函数的函数名,第二三个参数分别是两个数值,fun函数接收这三个参数之后就将test_add函数作为所谓的fun1然后执行return fun1(x,y)的操作了。也就是1+2

匿名函数

函数的定义方式有两种,一种是使用def关键字,可以定义带有名称的函数,另一种是使用lambda关键字,可以定义匿名函数(无名称)

有名称的函数,可以基于名称重复使用。

无名称的匿名函数,只可临时使用一次。

匿名函数定义语法:lambda 参数:一行代码

其中lambda 是关键字,表示定义匿名函数。传入参数表示匿名函数的形式参数。匿名函数的函数体只能写一行,无法写多行代码。

匿名函数也是可以作为参数传递的,如图

传递给fun函数的fun1参数就是一个匿名函数,这个函数的函数体只有一句代码,也只能有一句代码,这里是x+y,运行结果为:调用fun函数的结果为3。由于匿名函数无法重复调用,因此一个匿名函数的作用范围就只有这一次调用。调用完成之后无法二次使用。我们可以注意到我们在定义匿名函数的时候并没有写return x+y,只是写了x+y看起来好像是只执行x+y的操作不带回任何值,但是在调用fun函数的时候却发现有返回值,也就是x+y的值,这是因为匿名函数默认就是return的,当然如果写的那一句代码是打印什么的就不会return。

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

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

相关文章

快速入门Spring Data JPA

Spring Data JPA是Spring Data框架的一小部分,它能够让开发者能够更加简单的对数据库进行增删改查。 由于Spring Data JPA可以自动生成SQL代码所以一般情况下,简单的增删查改就可以交给Spring Data JPA来完成,而复杂的动态SQL等用MyBatis来完…

软考 系统架构设计师系列知识点之大数据设计理论与实践(14)

接前一篇文章:软考 系统架构设计师系列知识点之大数据设计理论与实践(13) 所属章节: 第19章. 大数据架构设计理论与实践 第4节 Kappa架构 19.4.3 Kappa架构的实现 下面以Apache Kafka为例来讲述整个全新架构的过程。 部署Apach…

解线性方程组——直接解法:LU分解、PLU分解(类似列主元消去法) | 北太天元

L: lower triangular 下三角 U: upper triangular 上三角 LU 分解,顾名思义,为 把一个 矩阵 分成 一个下三角矩阵 乘上一个上三角矩阵的形式。 Example 为什么可以这样 几个基本的初等行变换,可以自己验算一下,等式的左边与右边…

Linux管道共享内存

前言 进程虽然是独立运行的个体,但它们之间有时候需要协作才能完成一项工作,比如有两个进程需要同步数据,进程 A 把数据准备好后,想把数据发往进程 B,进程 B 必须被提前通知有数据即将到来,或者进程 A 想发…

腾讯EdgeOne产品测评体验—金字塔般的网络安全守护神

作为一名对网络安全和性能优化充满热情的用户,我决定体验腾讯云下一代 CDN 服务 - EdgeOne。这款引以为傲的全方位服务如数来到,从域名解析、动静态智能加速到四层加速及DDoS/CC/Web/Bot 防护,一应俱全。随着时代风云变幻,日均数千…

kubernetes1.28版本的二进制安装

前言 二进制部署 Kubernetes(K8s)集群相对于其他部署方式(如基于发行版的包管理器、容器化部署工具等)具有一些优势,主要包括: 灵活性:二进制部署方式更加灵活,您可以根据自己的需…

冯喜运:4.21黄金市场失去正常反应?下周黄金原油解析

【黄金消息面解析 】:周五(4月19日),伊朗媒体似乎淡化了以色列袭击的影响,表明地缘政治风险降低,导致避险资产需求放缓,金价回吐涨幅。本周现货黄金价格上涨超2%。美国黄金期货收盘上涨0.7%,至2413.8美元。…

基于SpringBoot的“火车订票管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“火车订票管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 前台首页功能界面图 登录、用…

Shapley量化调峰成本?高比例可再生能源电力系统的调峰成本量化与分摊模型程序代码!

前言 在能源安全、环境污染和气候变化的大背景下,大力发展可再生能源是应对全球气候变化,实现“碳达峰、碳中和”和可持续发展的重大需求。截至2020年底,中国风电总装机容量为281GW,风力发电466.5TWh,同比增长约15%&a…

运动想象 (MI) 分类学习系列 (10) :iWSGL-CSP

运动想象分类学习系列:iWSGL-CSP 0. 引言1. 主要贡献2. 提出的方法3. 结果3.1 在3个数据集上的效果3.2 基线比较 4. 总结欢迎来稿 论文地址:https://www.sciencedirect.com/science/article/abs/pii/S0957417423027884 论文题目:Improvement of motor im…

强固型工业电脑在称重系统+叉车电脑,称重量体扫码一体机,物流分拣线工作站行业应用

称重系统叉车电脑行业应用 背景介绍 在叉车上安装称重传感器,通过对举升压力的自动检测,将压力信号转换为电流或电压信号,经过A/D转换,使模拟信号变为数字信号,经微处理器进行数据处理后通过蓝牙、串口或者USB接口将称…

Cucumber基本介绍

Cucumber 是什么? Cucumber是一种支持行为驱动开发(BDD)的工具 Cucumber读取以纯文本编写的可执行规范,并验证软件是否按照这些规范所说的执行。规范由多个示例或场景组成。例如: Feature: 用户登录功能 作为用户&…

生成人工智能体:人类行为的交互式模拟论文与源码架构解析(1)——场景故事介绍

生成NPC为交互应用程序创建逼真的人类行为模拟。在这项工作中,我们通过将二十五个NPC放置在一个沙盒环境中(类似于The Sims,模拟人生),展示了生成NPC的能力。用户可以观察和干预NPC的日常计划、分享新闻、建立关系以及…

随机过程-题目

1.平稳随机过程的统计特姓不随时间的推移而不同,其一维分布与时间无关,二维分布只与时间间隔有关。 2.一个均值为0、方差为的窄带平稳高斯过程,其同相分量和正交分量是平稳高斯过程,均值为0,方差为。 3.均值为0的平稳…

Python 数据结构和算法实用指南(四)

原文:zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d 译者:飞龙 协议:CC BY-NC-SA 4.0 第十二章:字符串算法和技术 根据所解决的问题,有许多流行的字符串处理算法。然而,最重要、最流行和最有…

深度学习--CNN卷积神经网络(附图)

框架 让我们先看一下CNN的框架 卷积层中后是ReLu激活函数 ,然后是深化池,之后是全连接,最后进行Softmax进行归一化。 所以,我们先逐一了解一下它们各个部分 全连接层 全连接层也称感知机,BP神经网络 全连接层&…

《 我的 CSDN 时光,一周年里程碑》# 胡杨三千年 # 致敬奔腾不息的你 # 胡杨不死, 砥砺不绝

LiuJinTao : 2024年4月21日 一定要披荆斩棘,保持学习的态度和能力!加油 LiuJinTao 2025年4月21日 文章目录 《 我的 CSDN 时光,一周年里程碑》机缘收获日常成就憧憬保持热爱,奔赴山海跨越山海,终见曙光致 …

使用Python爬取易车网汽车信息(含x-sign参数逆向分析)

文章目录 1. 写在前面2. 接口分析3. 断点分析3. 算法还原 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致…

.NET 邮件发送 SMTP邮件发送

SMTP(Simple Mail Transfer Protocol)是用于电子邮件传输的规则集,可以从邮件客户端向接收电子邮件服务器发送、中继或转发邮件。发件人可使用SMTP 服务器来执行发送电子邮件的过程。SMTP服务器则是按照这些规则中转电子邮件的服务器。 IMAP…

Linux应用开发(8):Linux进程间通信(IPC):管道

Linux应用开发(7):Linux进程间通信(IPC):POSIX消息队列https://blog.csdn.net/tecsai/article/details/137879465 1. 简述 我们在前面已经介绍了进程间通信(IPC)常用的“消息队列”…