当前位置: 首页 > 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
http://www.lryc.cn/news/458740.html

相关文章:

  • 视频汇聚平台EasyCVR支持云端录像丨监控存储丨录像回看丨录像计划丨录像配置
  • 【Spring】获取 Cookie和Session
  • MyBatis-Plus 的核心插件及其使用介绍
  • 雷池社区版本SYSlog使用教程
  • Leetcode 下一个排列
  • WPF中的布局
  • 【Spring】Spring和SpringMVC为什么需要父子容器
  • Origin制图——双轴线图实现
  • 【算法系列-哈希表】两个集合的交集问题
  • linux 效率化 - zsh + tmux
  • Python学习-函数
  • 点评项目-4-隐藏敏感信息、使用 redis 优化登录业务
  • Redis异步实现解析
  • matlab 相关
  • 从组会尴尬到学术突破:Transformer助力跨域推荐解析
  • 【Flutter、H5、Web?前端个人总结】分享从业经历经验、自我规范准则,纯干货
  • mysql主从配置
  • sklearn pipeline
  • springboot实现服务注册与发现
  • 美格智能亮相2024中国移动全球合作伙伴大会,共赢AI+时代
  • 【LeetCode】动态规划—309. 买卖股票的最佳时机含冷冻期(附完整Python/C++代码)
  • IDE启动失败
  • 【Kubernetes】常见面试题汇总(六十)
  • maven dependency中scope的取值类型
  • 线性代数在大一计算机课程中的重要性
  • 笔记本电脑按住电源键强行关机,对电脑有伤害吗?
  • 如何将 cryptopp库移植到UE5内
  • SpringBoot 集成GPT实战,超简单详细
  • 基于Langchain框架下Prompt工程调教大模型(LLM)[输入输出接口、提示词模板与例子选择器的协同应用
  • Vue基于vue-office实现docx、xlsx、pdf文件的在线预览