快速学习Python基础知识详细图文教程9--函数进阶

📅 2026/7/17 20:51:27
快速学习Python基础知识详细图文教程9--函数进阶
来源引用网络知识与某站曹老师视频相互结合学习记录仅供参考Python 基础知识函数进阶函数的多返回值在复杂业务情况下函数是可以有多个返回值的类型也不限制语法是 return 返回值 1,返回值 2,...返回值 nreturn [表达式]语句用于退出函数选择性地向调用方返回一个表达式不带参数值的 return 语句返回 Nonedef apple(): return 1, python, True调用函数返回类型是元组 tuple 类型元组类型数据再进行取值时通过遍历即可# 定义一个多返回值的函数 def apple(): return 1, python, True # 返回元组类型 result apple() print(fresult{result}type{type(result)}) 运行输出结果 result(1, python, True)typeclass tuple调用函数返回时通过多个变量进行接收# 定义一个多返回值的函数 def apple(): return 1, python, True # 返回元组类型 result apple() print(fresult{result}type{type(result)}) # 通过多个变量接收 a, b, c apple() print(fa{a}, b{b}, c{c}) 运行输出结果 result(1, python, True)typeclass tuple a1, bpython, cTrue函数的不定长参数在之前学习 Python 基础知识 3--函数时有介绍过位置参数关键字参数默认值参数所以现在开始学习一个不定长参数它主要是用于不确定调用的时候会传递多少个参数的测试场景可能需要一个函数能处理比当初声明时更多的参数这种参数叫做不定长参数声明时不会命名不定长参数的类型分为位置传递和关键字传递两种。不定长参数位置传递加了星号*一个 * 星号的参数会以元组(tuple)的形式导入存放所有未命名的变量参数如果在函数调用时没有指定参数它就是一个空元组。我们也可以不向函数传递未命名的变量一般通过元组 tuple 类型的 *args 来实现def apple(*args): print(args, type(args)) apple(1, 2, 3) apple(True, 1, 456, 3.1415926) # 可不传任何参数返回一个空的元组 apple() 运行输出结果 (1, 2, 3) class tuple (True, 1, 456, 3.1415926) class tuple () class tuple不定长参数关键字传递加了两个星号**的参数会以字典的形式导入可以通过字典 dict 类型**kwargs 来实现def apple(**kwargs): print(kwargs, type(kwargs)) apple(name张三, age11) apple() 运行输出结果 {name: 张三, age: 11} class dict {} class dict使用函数变量Python 语言中的函数也是一种值所有函数都是 function 对象这意味着可以把函数本身赋值给变量# 定义计算两个参数相加的函数 def add(x, y): return x y # 将add自定义函数赋值给my_add则my_add可以被当做是“add”使用 my_add add # 调用my_add函数 print(my_add(2, 3)) print(add(1, 1)) 运行输出结果 5 2使用函数作为函数形参有些时候可能需要定义一个函数该函数的大部分计算逻辑都能确定但某些处理逻辑暂时无法确定这意味着某些程序代码需要动态改变时如果希望调用函数时能动态传入这些代码那么就需要在函数中定义函数形参这样即可在调用该函数时传入不同的函数作为参数从而动态改变这段代码。1、def func(): --自定义一个函数2、def func(x, y): --比如说有两个参数分别是 x 和 y3、def func(x, y, fn): --但是此时具体还不知道 x 和 y 是怎么处理可以是做加法处理也可以是做减法处理只有在调用时才能够确定这时的话只要直接传入一个函数参数 fn自定义 就行了把函数传进去操作即可4、return fn() --然后 returnfn()做为函数5、return fn(x, y) -- fn 就是一个函数然后操作返回结果6、再自定义两个一个定义加法、一个定义减法7、执行调用在调用时才确认需要调用哪个方法# 自定义函数 def func(x, y, fn): return fn(x, y) # 定义加法 def add(x, y): return x y # 定义减法 def sub(x, y): return x - y # 调用加法 print(func(2, 1, add)) # 调用加法 print(func(2, 1, sub)) 运行输出结果 3 1使用函数作为返回值在 Python 语言中还支持使用函数作为其他函数的返回值一般用的不多学习了解1、def func(bol): --自定义一个函数返回类型是布尔类型2、根据实际业务选择传来参数或者里面做一大堆业务逻辑例如做一个判断3、根据 bol 类型返回一个方法如果 bol 类型是 True 就返回 add 方法若是 False 就返回减法这里举例是一个简单逻辑可根据实际选择在一大堆业务逻辑操作中根据不同的情况返回多种方法# 自定义函数 def func(bol): if bol: return add else: return sub def add(x, y): return x y def sub(x, y): return x - y b1 func(True) print(b1, b1(1, 2)) b2 func(False) print(b2, b2(1, 2)) 运行输出结果 function add at 0x0000023C5B589080 3 function sub at 0x0000023C5B505A80 -1lambda 匿名函数上面所介绍的函数定义都是有函数名的现在开始学习的 lambda 函数是没有名称的也就是匿名函数。在只需要一次性使用的函数的时候就可以用 lambda 匿名函数简单方便快捷lambda 匿名函数语法lambda 传入参数:函数体注意函数体只能写一行不支持多行# 自定义函数 def func(x, y, fn): return fn(x, y) # 使用lambda匿名函数 print(func(2, 1, lambda x, y: x y)) 运行输出结果 3其他把 sub 函数变量传参改成 lambda 匿名函数传参# 自定义函数 def func(x, y, fn): return fn(x, y) # 使用lambda匿名函数 print(func(2, 1, lambda x, y: x - y)) 运行输出结果 1Python lambda匿名函数Python 使用lambda来创建匿名函数lambda 函数是一种小型、匿名的、内联函数它可以具有任意数量的参数但只能有一个表达式匿名函数不需要使用def关键字定义完整函数lambda 函数通常用于编写简单的、单行的函数通常在需要函数作为参数传递的情况下使用例如在 map()、filter()、reduce() 等函数中。lambda 函数特点lambda 函数是匿名的它们没有函数名称只能通过赋值给变量或作为参数传递给其他函数来使用。lambda 函数通常只包含一行代码这使得它们适用于编写简单的函数。lambda arguments: expression # lambda是 Python 的关键字用于定义 lambda 函数。 # arguments 是参数列表可以包含零个或多个参数但必须在冒号(:)前指定。 # expression 是一个表达式用于计算并返回函数的结果。没有参数的 lambda 函数# 没有参数的 lambda 函数 myla lambda: Hello, World!! # 打印输出 print(myla()) 运行输出结果 Hello, World!!使用 lambda 创建匿名函数# 设置一个函数参数 a函数计算参数 a 加 50并返回结果 myla lambda a : a 50 # a5 print(myla(5)) 运行输出结果 55设置多个参数的 lambda 函数# 设置函数参数 a和b 相乘并返回结果 myla lambda a, b : a * b # a10b20 print(myla(10, 20)) 运行输出结果 200lambda 函数也可以设置多个参数参数使用逗号,隔开# 设置函数参数 a、b 和 c 相加并返回结果 myla lambda a, b, c : a b c # a1b2c3 print(myla(1, 2, 3)) 运行输出结果 6lambda 函数通常与内置函数如 map()、filter() 和 reduce() 一起使用以便在集合上执行操作。numbers [1, 2, 3, 4, 5] squared list(map(lambda x: x**2, numbers)) print(squared) 运行输出结果 [1, 4, 9, 16, 25]使用 lambda 函数与 filter() 一起筛选偶数numbers [1, 2, 3, 4, 5, 6, 7, 8] even_numbers list(filter(lambda x: x % 2 0, numbers)) print(even_numbers) 运行输出结果 [2, 4, 6, 8]使用 reduce() 和 lambda 表达式演示如何计算一个序列的累积乘积# 导包 from functools import reduce numbers [1, 2, 3, 4, 5] # 使用 reduce() 和 lambda 函数计算乘积 product reduce(lambda x, y: x * y, numbers) print(product) 运行输出结果 120reduce() 函数通过遍历 numbers 列表并使用 lambda 函数将累积的结果不断更新最终得到了1 * 2 * 3 * 4 * 5 120的结果。未完待续......