码迷,mamicode.com
首页 > 编程语言 > 详细

Python-匿名函数

时间:2018-08-24 23:34:41      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:return   用途   括号   foo   class   函数返回   turn   *args   nbsp   

1、匿名函数

  匿名:没有名字

  匿名函数:即没有名字的函数

  Python 借助 lambda 表达式构建匿名函数

  格式:

    lambda 参数列表:表达式

 1 lambda x: x ** 2
 2 
 3 (lambda x: x**2)(4) #加括号调用,注意前面的函数也要加括号!!
 4 
 5 foo = lambda x, y :(x+y) ** 2 #  不推荐这么用
 6 foo(1,2)
 7 
 8 def foo(x,y):
 9     return (x+y)**2
10 foo(2,1)

 

  匿名函数:

    • 使用 lambda 关键字 来定义匿名函数
    • 参数列表不需要小括号
    • 冒号是用来分割参数列表和表达式  
    • 不需要使用return ,表达式的值,就是匿名函数返回值 
    • lambda 表达式(匿名函数)只能写在一行上,被称为单行函数
    • 表达式不能出现 = ,+= 。。。。
  • 用途:
    • 在高阶函数传参时,使用lambda表达式,简化代码。
      1 print((lambda : 0)()) # 0
      2 print((lambda x, y=30: x + y)(5, 6)) # 11
      3 print((lambda x, *, y=10: x + y)(5, y=10)) # 15
      4 print((lambda x, *, y=19: x + y)(5)) # 24
      5 print((lambda *args:(x for x in args))(*range(5))) # 函数返回一个生成器 ,(x for x in args)生成器表达式
      6 print((lambda *args:[x for x in args])(*range(5))) # 函数返回一个列表
      7 
      8 print([x for x in (lambda *args:map(lambda x:x+1,args))(*range(5))]) # [1, 2, 3, 4, 5] 高阶函数
      9 print([x for x in (lambda *args:map(lambda x:(x+1,args), args))(*range(5))]) # [(1, (0, 1, 2, 3, 4)), (2, (0, 1, 2, 3, 4)), (3, (0, 1, 2, 3, 4)), (4, (0, 1, 2, 3, 4)), (5, (0, 1, 2, 3, 4))]

       

 

Python-匿名函数

标签:return   用途   括号   foo   class   函数返回   turn   *args   nbsp   

原文地址:https://www.cnblogs.com/JerryZao/p/9532355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!