zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    web前端要学哪些?
    angularjs factory,service,provider 自定义服务的不同
    PSP软件开发过程
    Eclipse连接sqlserver体验过程
    在线制作GIF图片项目愿景与范围
    C# Hashtable vs Dictionary 学习笔记
    Unity 工作经历+近期面试经历
    配置文件加载的一个坑
    rabbitmq exchange type
    centos7下nginx添加到自定义系统服务中提示Access denied
  • 原文地址:https://www.cnblogs.com/kiki5881/p/8523414.html
Copyright © 2011-2022 走看看