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)解析
-
test_func 函数需要一个函数作为参数传入,这个传入的函数需要接收两个数字进行计算,计算逻辑由这个被传入函数决定
-
compute1 / compute2 函数接收两个数字对其进行计算,compute 函数作为参数,传递给 test_func 函数
-
在 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、解析 按照返回值的顺序,用对应顺序的多个变量接收,变量之间用逗号(,)隔开 支持返回不同类型的数据 二、函…...

视频汇聚平台EasyCVR支持云端录像丨监控存储丨录像回看丨录像计划丨录像配置
EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。平台以其强大的视频处理、汇聚与融合能力,在构建视频监控系统中展现出了独特的优势。 EasyCVR视频汇聚平台可接入传统监控行业中高清网络摄像机的RTSP…...

【Spring】获取 Cookie和Session
回顾 Cookie HTTP 协议自身是属于“无状态”协议 无状态:默认情况下,HTTP 协议的客户端和服务器之间的这次通信和下次通信之间没有直接的联系 但是在实际开发中,我们很多时候是需要知道请求之间的关联关系的 例如登录网站成功后ÿ…...
MyBatis-Plus 的核心插件及其使用介绍
MyBatis-Plus 是基于 MyBatis 的增强工具,为简化 MyBatis 的开发提供了诸多功能扩展。它的目标是减少重复代码、提高开发效率,提供了 CRUD(Create, Read, Update, Delete)操作的简化方法以及多种实用插件。以下是 MyBatis-Plus 的…...

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

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

WPF中的布局
布局原则 1、不显式设置元素大小。 2、不使用绝对定位。 元素应该根据容器的内容来进行排列。绝对定位在开发前期会带来一些便捷,但扩展性比较差。一旦显示器尺寸或分辨率发生改变,界面的显示效果可能会达不到预期的效果。 3、布局容器可以嵌套使用 常…...
【Spring】Spring和SpringMVC为什么需要父子容器
Spring和Spring MVC使用父子容器的设计模式,主要是为了实现更好的模块化和隔离,提高系统的灵活性和可维护性。具体来说,Spring应用通常包含两个层次的容器:根容器(Root WebApplicationContext)和子容器&…...

Origin制图——双轴线图实现
1.在我们平常的画图中,我们会遇到属于差别比较的两个数据,但是画两个图又太占地方了(难以实现对数据的比较工作),我们想把它画在一个图上,那么怎么实现呢。首先我们输入导入,可以选择excal文件导…...
【算法系列-哈希表】两个集合的交集问题
【算法系列-哈希表】两个集合的交集问题 文章目录 【算法系列-哈希表】两个集合的交集问题1. 两个集合的交集问题(LeetCode 349)1.1 思路分析🎯1.2 代码示例🌰 2.两个集合的交集问题II(LeetCode 350)2.1 思路分析🎯2.2 代码示例🌰…...

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

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

点评项目-4-隐藏敏感信息、使用 redis 优化登录业务
一、隐藏敏感信息 之前我们对 /user/me 路径,直接返回了登录的所有用户信息,其中的 passward 等敏感信息也会被返回到前端,这是很危险的,故我们需要选择性的返回用户信息,隐藏敏感用户信息 我们可以创建一个 UserDTO…...
Redis异步实现解析
目录 1. Redis 异步方式1.1 同步连接优点缺点示例:访问 Redis,并对 counter 实现自增1000次,统计用时 1.2 异步连接优点缺点1.2.1 Redis 驱动1.2.2 示例第1步:实现 Reactor第2步:实现 Redis 适配器第3步:实…...

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

从组会尴尬到学术突破:Transformer助力跨域推荐解析
最近学习了Transformer模型,突然意识到我常阅读的一篇论文中也使用了Transformer。回想起上次开组会时,老师问我论文中的模型是什么,我当时没有答上来,现在才发现其实用的就是Transformer。这种学习过程让我深感,学得越…...

【Flutter、H5、Web?前端个人总结】分享从业经历经验、自我规范准则,纯干货
前言 hi,正式接触web前端已经经过了两年的时间,从大学的java后端转型到web前端,再到后续转战Flutter,逐渐对前端有了一些心得体会,其实在当下前端的呈现形式一直在变化,无论你是用原生、还是web还是混编的…...
mysql主从配置
一、准备工作 准备两个版本一致的数据库。 确认主库开启二进制日志,并配置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框架,其中Eureka和Consul是两个常用的服务注册与发现组件。以下是使用Eureka来实现服务注册与发现的基本步骤。 准备工作 添加依赖:在你的Spring Boot项目的pom.xml文件中添加Eureka相关的依…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...