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

6.Python 函数进阶(函数多返回值、函数多种传参方式、匿名函数)

一、函数多返回值

1、具体实现
def test_return():return 1, 2x, y = test_return()print(x)
print(y)
  • 输出结果
1
2
2、解析
  • 按照返回值的顺序,用对应顺序的多个变量接收,变量之间用逗号(,)隔开

  • 支持返回不同类型的数据


二、函数多种传参方式

1、位置参数
(1)基本介绍
  • 调用函数时根据函数定义的参数位置来传递参数

  • 注:传递的参数和定义的参数的顺序及个数必须一致

(2)基本使用
def user_info(name, age, gender):print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")user_info("jack", 20, "男")
user_info("mery", 18, "女")
user_info("tom", 25, "男")
  • 输出结果
您的名字是:jack,年龄是:20,性别是:男
您的名字是:mery,年龄是:18,性别是:女
您的名字是:tom,年龄是:25,性别是:男
2、关键字参数
(1)基本介绍
  • 函数调用时通过“【键】 = 【值】”形式传递参数

  • 关键字函数可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求

  • 注:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序

(2)基本使用
def user_info(name, age, gender):print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")# 关键字传参
user_info(name = "jack", age = 20, gender = "男")# 关键字传参,可以不按照固定顺序
user_info(age = 18, name = "mery", gender = "女")# 可以和位置参数混用,位置参数必须在前,且对应参数位置
user_info("tom", age = 25, gender = "男")
  • 输出结果
您的名字是:jack,年龄是:20,性别是:男
您的名字是:mery,年龄是:18,性别是:女
您的名字是:tom,年龄是:25,性别是:男
3、缺省参数
(1)基本介绍
  • 缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值

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

  • 注:所有位置参数必须出现在默认参数前,包括函数定义和调用

(2)基本使用
def user_info(name, age, gender, vipLevel = 0):print(f"您的名字是:{name},年龄是:{age},性别是:{gender},vip 等级是:{vipLevel}")user_info("jack", 20, "男")
user_info("mery", 18, "女", 1)
user_info("tom", 25, "男", 2)
  • 输出结果
您的名字是:jack,年龄是:20,性别是:男,vip 等级是:0
您的名字是:mery,年龄是:18,性别是:女,vip 等级是:1
您的名字是:tom,年龄是:25,性别是:男,vip 等级是:2
4、不定长参数
(1)基本介绍
  • 不定长参数也叫可变参数. 用于不确定调用的时会传递多少个参数(不传参)的场景

  • 不定长参数的类型有位置传递和关键字传递

类型说明
位置传递所有参数都会被 args 变量收集,同时根据传进参数的位置合并为一个元组
不定长传递参数是“【键】 = 【值】”形式的情况下, 所有的键值对都会被 kwargs 变量收集, 同时组成字典
(2)基本使用
print("不定长参数 - 位置传递 ------------------------------")def get_Info1(*args):print(args, type(args))get_Info1("tom")
get_Info1("jack", 18)print(" 不定长参数 - 关键字传递 ------------------------------")def get_Info2(**kwargs):print(kwargs, type(kwargs))get_Info2(name = "mery")
get_Info2(name = "jerry", age = 20)
  • 输出结果
不定长参数 - 位置传递 ------------------------------
('tom',) <class 'tuple'>
('jack', 18) <class 'tuple'>不定长参数 - 关键字传递 ------------------------------
{'name': 'mery'} <class 'dict'>
{'name': 'jerry', 'age': 20} <class 'dict'>

三、匿名函数

1、函数作为参数传递
(1)基本介绍
  • 在前面的函数学习中,我们一直使用的函数,都是接受数据作为参数传入,有:数字、字符串、列表、元组、字典等

  • 其实,函数本身也可以作为参数传入另一个函数内

(2)具体实现
def test_func(compute):result = compute(10, 20)print(result)def compute1(num1, num2):return num1 + num2
test_func(compute1)def compute1(num1, num2):return num1 * num2
test_func(compute1)
  • 输出结果
30
200
(3)解析
  1. test_func 函数需要一个函数作为参数传入,这个传入的函数需要接收两个数字进行计算,计算逻辑由这个被传入函数决定

  2. compute1 / compute2 函数接收两个数字对其进行计算,compute 函数作为参数,传递给 test_func 函数

  3. 在 test_func 函数内部,由传入的 compute 函数,完成对数字的计算操作

(4)小节
  • 将函数作为参数传入的作用在于传入计算逻辑,而非传入数据
2、lambda 匿名函数
(1)基本介绍
函数的定义说明
def 关键字可以定义带有名称的函数,有名称的函数,可以基于名称重复使用
lambda 关键字可以定义匿名函数(无名称),匿名函数,只可临时使用一次
(2)匿名函数的定义
lambda 【传入参数】:【函数体(一行代码)】
  • lambda 是关键字,表示定义匿名函数

  • 传入参数表示匿名函数的形参,如:num1、num2,表示接收两个形参

  • 函数体,就是函数的执行逻辑,只能写一行,无法写多行代码

(3)基本使用
def test_func(compute):result = compute(20, 30)print(result)# 通过 lambda 关键字,传入一个一次性使用的 lambda 匿名函数
test_func(lambda num1, num2: num1 + num2)
test_func(lambda num1, num2: num1 - num2)
  • 输出结果
50
-10

相关文章:

6.Python 函数进阶(函数多返回值、函数多种传参方式、匿名函数)

一、函数多返回值 1、具体实现 def test_return():return 1, 2x, y test_return()print(x) print(y)输出结果 1 22、解析 按照返回值的顺序&#xff0c;用对应顺序的多个变量接收&#xff0c;变量之间用逗号&#xff08;,&#xff09;隔开 支持返回不同类型的数据 二、函…...

视频汇聚平台EasyCVR支持云端录像丨监控存储丨录像回看丨录像计划丨录像配置

EasyCVR视频汇聚融合平台&#xff0c;是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。平台以其强大的视频处理、汇聚与融合能力&#xff0c;在构建视频监控系统中展现出了独特的优势。 EasyCVR视频汇聚平台可接入传统监控行业中高清网络摄像机的RTSP…...

【Spring】获取 Cookie和Session

回顾 Cookie HTTP 协议自身是属于“无状态”协议 无状态&#xff1a;默认情况下&#xff0c;HTTP 协议的客户端和服务器之间的这次通信和下次通信之间没有直接的联系 但是在实际开发中&#xff0c;我们很多时候是需要知道请求之间的关联关系的 例如登录网站成功后&#xff…...

MyBatis-Plus 的核心插件及其使用介绍

MyBatis-Plus 是基于 MyBatis 的增强工具&#xff0c;为简化 MyBatis 的开发提供了诸多功能扩展。它的目标是减少重复代码、提高开发效率&#xff0c;提供了 CRUD&#xff08;Create, Read, Update, Delete&#xff09;操作的简化方法以及多种实用插件。以下是 MyBatis-Plus 的…...

雷池社区版本SYSlog使用教程

雷池会对恶意攻击进行拦截&#xff0c;但是日志都在雷池机器上显示 如何把日志都同步到相关设备进行统一的管理和分析呢&#xff1f; 如需将雷池攻击日志实时同步到第三方服务器, 可使用雷池的 Syslog 外发 功能 启用 Syslog 外发 进入雷池 系统设置 页面, 配置 Syslog 设置…...

Leetcode 下一个排列

首先理解整数的字典序&#xff0c;字典序排列总是优先让“较小的”元素出现在前面。字典序的排列规则类似于字典中的单词排列方式&#xff0c;从左到右逐位比较&#xff0c;较小的数字优先出现。按照正整数元素排列的字典序&#xff0c;如果将每个排列视为一个整数值&#xff0…...

WPF中的布局

布局原则 1、不显式设置元素大小。 2、不使用绝对定位。 元素应该根据容器的内容来进行排列。绝对定位在开发前期会带来一些便捷&#xff0c;但扩展性比较差。一旦显示器尺寸或分辨率发生改变&#xff0c;界面的显示效果可能会达不到预期的效果。 3、布局容器可以嵌套使用 常…...

【Spring】Spring和SpringMVC为什么需要父子容器

Spring和Spring MVC使用父子容器的设计模式&#xff0c;主要是为了实现更好的模块化和隔离&#xff0c;提高系统的灵活性和可维护性。具体来说&#xff0c;Spring应用通常包含两个层次的容器&#xff1a;根容器&#xff08;Root WebApplicationContext&#xff09;和子容器&…...

Origin制图——双轴线图实现

1.在我们平常的画图中&#xff0c;我们会遇到属于差别比较的两个数据&#xff0c;但是画两个图又太占地方了&#xff08;难以实现对数据的比较工作&#xff09;&#xff0c;我们想把它画在一个图上&#xff0c;那么怎么实现呢。首先我们输入导入&#xff0c;可以选择excal文件导…...

【算法系列-哈希表】两个集合的交集问题

【算法系列-哈希表】两个集合的交集问题 文章目录 【算法系列-哈希表】两个集合的交集问题1. 两个集合的交集问题(LeetCode 349)1.1 思路分析&#x1f3af;1.2 代码示例&#x1f330; 2.两个集合的交集问题II(LeetCode 350)2.1 思路分析&#x1f3af;2.2 代码示例&#x1f330;…...

linux 效率化 - zsh + tmux

文章目录 简介涉及的资料/代码仓库让我们开始吧1. Oh my Zsh!2. 终端主题 - powerlevel10k &#xff08;赋能优雅终端界面&#xff09;3. Oh my Tmux!安装完成&#xff0c;再加点料1. tmux2. zsh 结语参考资料 简介 来看一段操作演示&#xff08;全程键盘&#xff0c;没有鼠标…...

Python学习-函数

函数 文章目录 函数定义与调用参数传递内存分析返回值参数定义默认值参数个数可变的参数关键字参数 变量的作用域 匿名函数基本语法示例lambda与排序高阶函数map函数reduce函数filter函数 多关键字排序 定义与调用 函数可以嵌套用 先定义后调用 def calc(a,b):cabreturn cre…...

点评项目-4-隐藏敏感信息、使用 redis 优化登录业务

一、隐藏敏感信息 之前我们对 /user/me 路径&#xff0c;直接返回了登录的所有用户信息&#xff0c;其中的 passward 等敏感信息也会被返回到前端&#xff0c;这是很危险的&#xff0c;故我们需要选择性的返回用户信息&#xff0c;隐藏敏感用户信息 我们可以创建一个 UserDTO…...

Redis异步实现解析

目录 1. Redis 异步方式1.1 同步连接优点缺点示例&#xff1a;访问 Redis&#xff0c;并对 counter 实现自增1000次&#xff0c;统计用时 1.2 异步连接优点缺点1.2.1 Redis 驱动1.2.2 示例第1步&#xff1a;实现 Reactor第2步&#xff1a;实现 Redis 适配器第3步&#xff1a;实…...

matlab 相关

1、xcorr 本质上是两个函数做内积运算 相关算法有两种&#xff1a; 在Matlab上既可以 1.用自带的xcorr函数计算互相关&#xff0c;2.通过在频域上乘以共轭复频谱来计算互相关&#xff1b; 网友验证程序 clc;clear;close all; % s1,s2为样例数据 s1 [-0.00430297851562500;-…...

从组会尴尬到学术突破:Transformer助力跨域推荐解析

最近学习了Transformer模型&#xff0c;突然意识到我常阅读的一篇论文中也使用了Transformer。回想起上次开组会时&#xff0c;老师问我论文中的模型是什么&#xff0c;我当时没有答上来&#xff0c;现在才发现其实用的就是Transformer。这种学习过程让我深感&#xff0c;学得越…...

【Flutter、H5、Web?前端个人总结】分享从业经历经验、自我规范准则,纯干货

前言 hi&#xff0c;正式接触web前端已经经过了两年的时间&#xff0c;从大学的java后端转型到web前端&#xff0c;再到后续转战Flutter&#xff0c;逐渐对前端有了一些心得体会&#xff0c;其实在当下前端的呈现形式一直在变化&#xff0c;无论你是用原生、还是web还是混编的…...

mysql主从配置

一、准备工作 准备两个版本一致的数据库。 确认主库开启二进制日志&#xff0c;并配置server-id。 $ ##将 mysql的配置文件/home/mysql2/mysql/my.cnf 中关于二进制日志的配置 $ cd /home/mysql2/mysql/ $ vi my.cnf 修改如下 server-id 11 #log settings log_error erro…...

sklearn pipeline

示例代码 from sklearn.pipeline import Pipeline from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB import numpy as np import scipy.linalg from sklearn.preprocessing import LabelEncoder, StandardScaler …...

springboot实现服务注册与发现

在Spring Boot应用中实现服务注册与发现通常使用Spring Cloud框架&#xff0c;其中Eureka和Consul是两个常用的服务注册与发现组件。以下是使用Eureka来实现服务注册与发现的基本步骤。 准备工作 添加依赖&#xff1a;在你的Spring Boot项目的pom.xml文件中添加Eureka相关的依…...

美格智能亮相2024中国移动全球合作伙伴大会,共赢AI+时代

2024年10月11日至13日&#xff0c;主题为“智焕新生 共创AI时代”的2024中国移动全球合作伙伴大会&#xff0c;在广州琶洲保利世贸博览馆召开&#xff0c;作为中国移动重要的战略合作伙伴&#xff0c;美格智能亮相4号馆E22展位&#xff0c;与上百家知名企业共同展示最新数智化创…...

【LeetCode】动态规划—309. 买卖股票的最佳时机含冷冻期(附完整Python/C++代码)

动态规划—309. 买卖股票的最佳时机含冷冻期 题目描述前言基本思路1. 问题定义2. 理解问题和递推关系状态定义&#xff1a;状态转移公式&#xff1a;初始条件&#xff1a; 3. 解决方法动态规划方法伪代码&#xff1a; 4. 进一步优化5. 小总结 Python代码Python代码解释总结 C代…...

IDE启动失败

报错&#xff1a;Cannot connect to already running IDE instance. Exception: Process 24,264 is still running 翻译&#xff1a;无法连接到已运行的IDE实例。异常:进程24,264仍在运行 打开任务管理器&#xff0c;找到PID为24264的CPU线程&#xff0c;强行结束即可。 【Ct…...

【Kubernetes】常见面试题汇总(六十)

目录 131. pod 一直处于 pending 状态&#xff1f; 132. helm 安装组件失败&#xff1f; 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二&#xff09;” 。 题目 69-113 属于…...

maven dependency中scope的取值类型

在 Maven 中&#xff0c;<scope> 标签用于定义依赖项的范围&#xff0c;以指定依赖在不同阶段的可见性和生命周期。以下是 Maven 中常见的 <scope> 取值类型的详细介绍&#xff1a; 1. **compile**&#xff1a; - 默认的依赖范围&#xff0c;适用于编译、测试和…...

线性代数在大一计算机课程中的重要性

线性代数在大一计算机课程中的重要性 线性代数是一门研究向量空间、矩阵运算和线性变换的数学学科&#xff0c;在计算机科学中有着广泛的应用。大一的计算机课程中&#xff0c;线性代数的学习为学生们掌握许多计算机领域的关键概念打下了坚实的基础。本文将介绍线性代数的基本…...

笔记本电脑按住电源键强行关机,对电脑有伤害吗?

电脑卡住了&#xff0c;我们习惯性地按住电源键或者直接拔掉电源强制关机&#xff0c;但这种做法真的安全吗&#xff1f;会不会对电脑造成伤害呢&#xff1f; 其实&#xff0c;按住电源键关机和直接拔掉电源关机是不一样的。它们在硬件层面有着本质区别。 按住电源键关机 当…...

如何将 cryptopp库移植到UE5内

cryptopp是一个开源免费的算法库&#xff0c;这个库的用途非常多&#xff0c;我常常用这个库来做加解密的运算。这段时间在折腾UE5.4.4&#xff0c;学习的过程中&#xff0c;准备把cryptopp移植到游戏的工程内&#xff0c;但UE的编译环境和VS的编译环境完全不同&#xff0c;能在…...

SpringBoot 集成GPT实战,超简单详细

Spring AI 介绍 在当前的AI应用开发中&#xff0c;像OpenAI这样的GPT服务提供商主要通过HTTP接口提供服务&#xff0c;这导致大部分Java开发者缺乏一种标准化的方式来接入这些强大的语言模型。Spring AI Alibaba应运而生&#xff0c;它作为Spring团队提供的一个解决方案&…...

基于Langchain框架下Prompt工程调教大模型(LLM)[输入输出接口、提示词模板与例子选择器的协同应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下基于Langchain框架下Prompt工程调教大模型(LLM)[输入输出接口、提示词模板与例子选择器的协同应用。本文深入探讨了Langchain框架下的Prompt工程在调教LLM&#xff08;大语言模型&#xff09;方面的应用&#xff0c…...