百木园-与人分享,
就是让自己快乐。

Python 匿名函数 lambda - Python零基础入门教程

目录

  • 一.Python 匿名函数 lambda 语法
  • 二.Python 匿名函数 lambda 调用
    • 1.lambda 匿名函数常规使用
    • 2. lambda 匿名函数使用不定长参数
    • 3. lambda 匿名函数作为参数使用
  • 三.Python 匿名函数 lambda 重点总结:
  • 四.猜你喜欢

零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门

在 Python 开发中常规的函数在调用之前都需要先声明,而 Python 匿名函数,有速写函数的功能并且匿名函数不需要声明也没有函数名字,完全不需要担心函数名冲突,具体的妙用还需要从实战练习中多多积累经验。

一.Python 匿名函数 lambda 语法

lambda a,b,c:expression

1.匿名函数有关键字 lambda 修饰;
2.匿名函数冒号 : 之前的是函数的参数,匿名函数可以是无参匿名函数,也可以是带参匿名函数;
3.匿名函数冒号 : 之后是表达式,匿名函数不需要写 return,表达式的结果就是返回值;

# !usr/bin/env python

# -_- coding:utf-8 \\__-

\"\"\"
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 匿名函数 lambda.py
@Time:2021/04/11 09:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

\"\"\"

#不带参数的普通函数
def sing_dog():
return True #不带参数的匿名函数
f0 = lambda :True # 无参的匿名函数,在匿名函数的冒号前面无需写参数
print(sing_dog())
print(f0())

print(\"*\\*\\*\"*20)

#带参数的普通函数
def sub(a,b):
return a - b
def add(a,b):
return a + b

#带参数的匿名函数
f1 = lambda a,b:a-b
f2 = lambda a,b:a+b

print(sub(4,2))
print(add(4,2))
print(f1(4,2))
print(f2(4,2))

\'\'\'
输出结果:

True
True

2
6
2
6
\'\'\'

首先,匿名函数和普通函数对比之下,明显能感觉到匿名函数的使用能让代码更加简洁,当然匿名函数使用场景适用于比较简单的需求,对于复杂的计算,匿名函数是无法完成的;

其次,无参的匿名函数,在匿名函数的冒号前面无需写参数;

二.Python 匿名函数 lambda 调用

1.lambda 匿名函数常规使用

假如有这样一个需求:传入一个字符串,对字符串根据空格拆分,并以字符串的形式返回拆分后的结果,示例代码如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
\"\"\"
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 匿名函数 lambda.py
@Time:2021/04/11 09:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

\"\"\"

str1 = \"laowang is sing_dog \"

#普通函数
def get_str(str1):
# 1.将字符串拆分为列表
list1 = str1.split(\" \")
# 2.将列表转为字符串并返回字符串
return \"\".join(list1)

# 将1/2两步合并为一步完成
# return \"\".join(str1.split(\" \"))

print(\"打印原始字符串:\",str1)
print(\"调用普通函数获取字符串拆分结果:\",get_str(str1))

#匿名函数
f0 = lambda a:\"\".join(a.split(\" \"))
print(\"调用匿名函数获取字符串拆分结果:\",f0(str1))

\'\'\'
输出结果:

打印原始字符串: laowang is sing_dog
调用普通函数获取字符串拆分结果: laowangissing_dog
调用匿名函数获取字符串拆分结果: laowangissing_dog
\'\'\'

如果对字符串转换不太熟悉的童鞋请参考:字符串/列表/元组/字典之间的相互转换

2. lambda 匿名函数使用不定长参数

# !usr/bin/env python
# -*- coding:utf-8 _*-
\"\"\"
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 匿名函数 lambda.py
@Time:2021/04/11 09:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

\"\"\"

# 匿名函数:通过条件表达式,返回最大值
f0 = lambda x,y: x if x> y else y
print(f0(5,10))

# 匿名函数:求三个参数的乘积
f1 = lambda x,y,z: x*y*z
print(f1(1,2,3))

# 缺省的匿名函数
f2 = lambda x,y=2: x+y #使用了默认值
print(f2(10)) #第二个参数为缺省参数,使用默认值2

# 不定长参数的匿名函数
f3 = lambda *z:z #*z返回的是一个元祖
print(f3(\'hello\',False))

# 不定长参数的匿名函数
f4 = lambda **Arg: Arg #arg返回的是一个字典
print(f4(a=1,b=2,k=\"hello\"))

\'\'\'
输出结果:

10
6
12
(\'hello\', False)
{\'a\': 1, \'b\': 2, \'k\': \'hello\'}
\'\'\'

如果对 Python 不定长参数*argc,**kargcs 不太熟悉的话,可以在看一遍这篇文章:Python 函数不定长参数 *argc,**kargcs

3. lambda 匿名函数作为参数使用

其实匿名函数作为函数参数传参和普通函数传参没什么区别,示例代码如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
\"\"\"
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 匿名函数 lambda.py
@Time:2021/04/11 09:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

\"\"\"

def function1(a,b,):
return a if a>b else b #返回最大值

# 1.定义匿名函数
f0 = lambda b:b*10
# 2.匿名函数作为参数,调用普通函数
function1(100,f0(5))

# 上面两行代码合并为一行
function1(100 , (lambda b:b*10)(5))

]

三.Python 匿名函数 lambda 重点总结:

  • 1.匿名函数可以是无参匿名函数也可以是有参匿名函数;
  • 2.匿名函数不仅可以直接当作函数调用,还能直接作为函数中的参数直接使用;

四.猜你喜欢

  • Python 字符串/列表/元组/字典之间的相互转换
  • Python 局部变量和全局变量
  • Python type 函数和 isinstance 函数区别
  • Python is 和 == 区别
  • Python 可变数据类型和不可变数据类型
  • Python 浅拷贝和深拷贝
  • Python 递归函数
  • Python sys 模块
  • Python 列表 list
  • Python 元组 tuple
  • Python 字典 dict
  • Python 条件推导式
  • Python 列表推导式
  • Python 字典推导式
  • Python 函数声明和调用
  • Python 不定长参数 *argc/**kargcs
  • 未经允许不得转载:猿说编程 » Python 匿名函数 lambda

    本文由博客 - 猿说编程 猿说编程 发布!

    来源:https://www.cnblogs.com/shuopython/p/14868327.html
    图文来源于网络,如有侵权请联系删除。

    未经允许不得转载:百木园 » Python 匿名函数 lambda - Python零基础入门教程

    相关推荐

    • 暂无文章