Python入门到精通(六)——Python函数进阶

Python函数进阶

一、函数的多返回值

二、函数多种传参方式

1、位置参数

2、关键字参数

3、缺省参数

4、不定长参数

(1)位置传递

(2)关键字传递

三、匿名函数

(1)函数作为参数传递

(2)lambda匿名函数


一、函数的多返回值

如果一个函数出现了两个return,只可以执行第一个return,因为return可以退出当前函数,导致return下方代码不执行

1、定义

  • 按照返回值的顺序,写对应顺序的多个变量接收即可
  • 变量之间用逗号隔开
  • 支持不同类型的数据return

代码示例

def test_return():
    return 1, 2, 3


x, y, z = test_return()
print(y)  # 2

 

二、函数多种传参方式

1、位置参数

  • 调用函数时根据函数定义的参数位置来传递参数
  • 传递的参数和定义的参数的顺序及个数必须一致

代码示例

# 位置参数
def user_info(name, age, gender):
    print(f"姓名是{name},年龄是{age},性别是{gender}")


user_info("m", 23, "女")  # 姓名是m,年龄是23,性别是女

2、关键字参数

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

代码示例

# 关键字参数
def user_info(name, age, gender):
    print(f"姓名是{name},年龄是{age},性别是{gender}")


user_info(gender="女", age=23, name="m")  # 姓名是m,年龄是23,性别是女

3、缺省参数

  • 缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用).
  • 当调用函数时没有传递参数, 就会使用默认是用缺省参数对应的值.
# 缺省参数(默认值必须写在最后面)
def user_info(name, age, gender='女'):
    print(f"姓名是{name},年龄是{age},性别是{gender}")


user_info("m", 24)  # 姓名是m,年龄是24,性别是女

4、不定长参数

  • 不定长参数也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景
  • 当调用函数时不确定参数个数时, 可以使用不定长参数
(1)位置传递
  • *号标记一个形式参数,传进的所有参数都会args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递

代码示例

# 位置传递
def user_info(*args):
    print(args)

user_info('CSDN')  # ('CSDN',)
user_info('CSDN', 2024)  # ('CSDN', 2024)
(2)关键字传递
  • 参数是“键=值”形式的形式以*号标记一个形式参数
  • 关键字不定长传递以**号标记一个形式参数,以字典的形式接受参数,形式参数一般命名为kwargs

代码示例

# 关键字传递
def user_info(**kwargs):
    print(kwargs)

user_info(name='momo_via', year=2024)  # {'name': 'momo_via', 'year': 2024}

三、匿名函数

(1)函数作为参数传递
  • 函数本身是可以作为参数,传入另一个函数中进行使用的。
  • 将函数传入的作用在于:传入计算逻辑,而非传入数据。

代码示例

# 函数作为参数传递
def test_func(compute):
    result = compute(1, 2)  # 确定compute是函数
    print(f"计算结果:{result}")


# 定义一个函数,准备作为参数传入另一个函数
def compute(x, y):
    return x + y


# 调用,并传入函数
test_func(compute)  # 计算结果:3
(2)lambda匿名函数

  • 匿名函数用于临时构建一个函数,只用一次的场景
  • 匿名函数的定义中,函数体只能写一行代码,如果函数体要写多行代码,不可用lambda匿名函数,应使用def定义带名函数
# lambda匿名函数
def test_func(compute):
    result = compute(1, 2)  # 确定compute是函数
    print(f"计算结果:{result}")


test_func(lambda x, y: x + y)  # 计算结果:3

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

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

相关文章

Java面试架构篇【一览众山小】

文章目录 🚡 简介☀️ Spring🐥 体系结构🐠 生命周期 🍁 SpringMVC🌰 执行流程 🌜 SpringBoot🌍 核心组件🎍 自动装配🎑 3.0升级 🔅 spring Cloud Alibaba&am…

docker+jekins+maven+ssh 持续集成交付部署 jar包

一. docker环境搭建,此处略过。 二. docker部署jekins 2.1 拉取镜像,挂载工作目录,xxxx为宿主机指定工作目录 docker pull jenkins/jenkins docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --privilegedtrue -v xxxxxxxxxx:/var/jenkins…

Prompt Learning 的几个重点paper

Prefix Tuning: Prefix-Tuning: Optimizing Continuous Prompts for Generation 在输入token之前构造一段任务相关的virtual tokens作为Prefix,然后训练的时候只更新Prefix部分的参数,PLM中的其他参数固定。针对自回归架构模型:在句子前面添…

RabbitMQ之三种队列之间的区别及如何选型

目录 不同队列之间的区别 Classic经典队列 Quorum仲裁队列 Stream流式队列 如何使用不同类型的队列​ Quorum队列 Stream队列 不同队列之间的区别 Classic经典队列 这是RabbitMQ最为经典的队列类型。在单机环境中,拥有比较高的消息可靠性。 经典队列可以选…

基于java新闻发布及管理系统

技术架构: Servlet JSP MySQL 功能介绍: Java新闻发布系统新闻发布及管理系统就是一个能够在网上实现新闻的发布及管理,让人们更好的获取更新的新闻资讯。 (1)用户管理: 用户注册:新用…

亚马逊、速卖通、虾皮等平台测评自养号,虚拟信用卡的使用

在上一篇文章中,我提到了一个完善的自养号测评系统需要具备的几个要求。在这篇文章中,我将重点探讨支付方式虚拟信用卡的问题,以及如何避免信用卡关联。 首先,需要了解信用卡关联风控机制的存在意义。在跨境电商亚马逊平台上&…

Orion-14B-Chat-Plugin本地部署的解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

C# 二分搜索(Binary Search)

二分搜索概念 二分查找也称折半查找(Binary Search)它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 二分搜索的背景 二分搜索法的概念和思想可以追溯到古代的中国和…

服务器遭遇CC攻击怎么办,使用高防SCDN能防御吗

随着互联网的普及,网络安全问题日益凸显,其中CC攻击(也称为Challenge Collapsar攻击)已成为一种常见的网络攻击手段。CC攻击主要针对服务器的验证码系统进行攻击,通过大量请求来耗尽服务器资源,导致服务器无…

14个国产AI大模型备案获批,众多科技巨头进入AIGC赛道

北京商报官网消息,第四范式、什么值得买、新壹科技、衔远科技、小米、智联招聘、Boss直聘、脉脉等13家企业的,14个国产AI大模型通过《生成式人工智能服务管理暂行办法》备案,可实现商业化应用。 自2023年8月,文心一言、讯飞星火、…

论文笔记:多任务学习模型:渐进式分层提取(PLE)含pytorch实现

整理了RecSys2020 Progressive Layered Extraction : A Novel Multi-Task Learning Model for Personalized Recommendations)论文的阅读笔记 背景模型代码 论文地址:PLE 背景 多任务学习(multi-task learning,MTL)&a…

京东广告算法架构体系建设--在线模型系统分布式异构计算演变 | 京东零售广告技术团队

一、现状介绍 算法策略在广告行业中起着重要的作用,它可以帮助广告主和广告平台更好地理解用户行为和兴趣,从而优化广告投放策略,提高广告点击率和转化率。模型系统作为承载算法策略的载体,目前承载搜索、推荐、首焦、站外等众多广…

2024 新年HTML5+Canvas制作3D烟花特效(附源码)

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

Demo: 前端生成条形码并打印

前端生成条形码并打印 安装依赖&#xff1a; npm i print-js // 打印 npm i jsbarcode // 生成条形码 <template><div id"printContent" style"display: none;"><div id"elTable"><div class"name">名称&…

解决import Jetson.GPIO报错“权限错误”

在导入Jetson.GPIO模块时出现权限错误&#xff0c;可能是由于缺少适当的权限或设备权限问题。以下是一些建议&#xff1a; 使用sudo&#xff1a; 尝试使用sudo来运行你的Python脚本或解释器&#xff0c;以获取足够的权限&#xff1a; sudo python your_script.py请注意&#xf…

春节运维手册:自动巡检、应急预案和管家值守哪个更香?

春节假期就要来啦&#xff0c;在气氛组的不懈努力下&#xff0c;想要放假过年的心达到了顶峰&#xff0c;但总有工作离不开我&#xff0c;回家后还被Q&#xff0c;总不能视而不见吧&#xff1f;想要get不被工作打扰的假期&#xff0c;作为资深运维工程师&#xff0c;怎么可能没…

Easy-Es操作Elasticsearch

文章目录 1 Easy-Es1.1 简介1.2 MySQL与Easy-Es语法对比1.3 集成及配置1.3.1 pom.xml1.3.2 配置 1.4 使用1.4.1 注解的使用1.4.2 EsMapper接口1.4.3 简单搜索 1.5 使用案例1.5.1 综合商品搜索1.5.2 相关商品推荐1.5.3 聚合搜索商品相关信息 1 Easy-Es 使用过Spring Data操作ES…

图灵之旅--ArrayList顺序表LinkedList链表栈Stack队列Queue

目录 线性表顺序表ArrayList简介ArrayList使用ArrayList的构造ArrayList常见操作ArrayList的遍历ArrayList的扩容机制利用ArrayList洗牌ArrayList的优缺点 链表链表的实现双向链表的实现 LinkedListLinkedList引入LinkedList的使用LinkedList的构造LinkedList的常用方法介绍Lin…

优质硬盘检测工具SMART Utility,保障您的Mac数据安全

在日常使用Mac电脑的过程中&#xff0c;我们经常会存储大量的重要数据&#xff0c;如照片、文档、视频等。然而&#xff0c;硬盘故障却是一件令人头疼的事情&#xff0c;可能会导致数据丢失、系统崩溃等严重后果。为了保障您的数据安全&#xff0c;我们推荐一款专业的硬盘检测工…

260:vue+openlayers 通过webgl方式加载矢量图层

第260个 点击查看专栏目录 本示例介绍如何在vue+openlayers中通过webgl方式加载矢量图层。在做这个示例的时候,采用vite的方式而非webpack的方式。这里的基础设置需要改变一下。 ol的版本7.5.2或者更高。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文…