美文网首页
python3 匿名函数

python3 匿名函数

作者: tafanfly | 来源:发表于2019-12-23 18:07 被阅读0次

匿名函数概念

匿名函数顾名思义即函数没有具体的名称, 由lambda表达式来表示。

f = lambda x, y: x + y

print (f, callable(f))
print (f(1, 2))

#result
<function <lambda> at 0x7f88b2ddfe18> True
3

如上举例, lambda x, y: x + y 即为匿名函数。

  • 匿名函数需要关键字lambda来表达
  • x/y是匿名函数的参数
  • :为分隔符
  • 匿名函数有且仅有一个表达式,没有return,返回值就是该表达式的结果

优缺点

优点:

  • 没有函数名称,可以节省定义变量的内存
  • 无需担心和其他函数之间的命名冲突, 也不需要抓耳挠腮的起一个简单易懂的函数名
  • 简化函数,可以让代码更加简洁, 常常配合filter/map/reduce使用

缺点:

  • 对不熟悉lambda的人而言,可能会造成代码的晦涩难懂

应用注意

1. 可以没有参数,也可以有一个或多个参数, 参数亦可有默认值

f1 = lambda : 1
f2 = lambda x: x + 1
f3 = lambda x, y, z: x*x + y*y + z*z
f4 = lambda x, y=2, z=3: x*x + y*y + z*z

print(f1())
print(f2(1))
print(f3(1, 2, 3))
print(f4(1))
print(f4(2, 2, 2))
print(f4(2, z=4))

#result
1
2
14
14
12
24

2.匿名函数也是一个函数对象,可以直接后面传递实参; 可以直接赋值给一个变量,再利用变量来调用该函数;也可以作为返回值返回

print((lambda x, y, z: x + y + z)(1, 2, 3))

f = (lambda x, y, z: x + y + z)
print(f(1, 2, 3))

def add_nums():
    return lambda x, y, z: x + y + z


# 调用 add_nums 函数
adds = add_nums()
# 调用 lambda 函数
print(adds(1, 2, 3))

#result
6
6
6

相关文章

  • 扣丁学堂Python3开发之匿名函数用法示例详解

    今天扣丁学堂Python培训给大家分享关于Python3匿名函数用法,结合实例形式分析了Python3匿名函数的概...

  • Python 内置函数补充匿名函数

    Python3 匿名函数 定义一个函数与变量的定义非常相似,对于有名函数,必须通过变量名访问 匿名函数定义:使用 ...

  • python3 匿名函数

    匿名函数概念 匿名函数顾名思义即函数没有具体的名称, 由lambda表达式来表示。 如上举例, lambda x,...

  • 匿名函数

    Python3 匿名函数定义一个函数与变量的定义非常相似,对于有名函数,必须通过变量名访问 def func(x,...

  • day11高级函数和变量的作用域

    1. 匿名函数 1.1 什么是匿名函数 没有函数名的函数就是匿名函数 (匿名函数还是函数!!!!!!) 1.2 ...

  • 函数的扩展

    1.偏函数:基本没什么用(在python3中被默认参数代替)2.闭包函数:熟悉语法即可3.匿名函数:熟悉操作即可 ...

  • Day10-匿名函数&变量的作用域&函数递归&迭代器&生成器

    匿名函数 1.匿名函数 匿名函数就是没有函数名的函数; 匿名函数可以看成是类型是function的值和10, 'a...

  • Day10 函数

    一.匿名函数 1.匿名函数 匿名函数就是没有函数名的函数; 匿名函数可以看成是类型是function的值和10, ...

  • kotlin基础学习-2(匿名函数相关)

    匿名函数 定义时不取名字的函数,我们称之为匿名函数,匿名函数通常整体传递给其他函数,或者从其他函数返回。 匿名函数...

  • 总结Day10_函数提升

    ****函数**** ===匿名函数=== 1.什么是匿名函数   匿名函数还是函数,只是声明的格式和普通函数不一...

网友评论

      本文标题:python3 匿名函数

      本文链接:https://www.haomeiwen.com/subject/uqoznctx.html