Python 匿名函数

匿名函数

  • 函数可以像普通变量一样进行赋值


    def hello():
       print('hello world')

    print(hello.__name__)

    a = hello

    print(a.__name__)

    hello()
    a()
  • 函数可以作为参数传递,扩展函数的功能


    def add(a, b):
       return a+b

    def calc(a, b, func):
       return func(a, b)

    print(calc(2, 3, add))
  • 场景:当函数作为另一个函数的参数,只使用一次也得定义,否则无法使用,于是匿名函数就出现了。

  • 定义:就是没有名字的函数,使用lambda关键字定义

  • 格式:

    • 以lambda开头

    • 后面跟上该匿名函数的参数,多个参数使用逗号隔开

    • 最后一个参数的后面跟上冒号':'

    • 冒号的后面跟上一个表达式,这个表达式就是返回值,不需要使用return

  • 示例1:


    def calc(a, b, func):
       return func(a, b)
       
    # mul = lambda x, y: x*y
    # print(calc(3, 5, mul))
    print(calc(3, 5, lambda x,y:x*y))
  • 示例2:


    # l = [5, 3, 2, 8, 6, 1]

    l = [
      {'name':'xiaowang', 'age':15, 'height':150},
      {'name':'xiaodu', 'age':14, 'height':145},
      {'name':'xiaopang', 'age':12, 'height':140},
      {'name':'banhua', 'age':13, 'height':155},
    ]

    # def d_key(d):
    #     return d['age']
    # l.sort(key=d_key)
    # 当列表中的元素无法直接比较大小时,需要传递参数key
    # key是一个函数,接受元素作为参数,返回用于比较的项
    l.sort(key=lambda x:x['height'])

    for i in l:
      print(i)
  • 练习:

    • 试着自己封装一个列表的sort函数,接受参数:排序对象、key、reverse

posted @ 2018-03-07 16:47  pythonsonline  阅读(200)  评论(0编辑  收藏  举报