Python3.+匿名函数

作者: __Y_Q | 来源:发表于2017-10-24 17:06 被阅读35次

1.匿名函数

Python中使用 lambda 表达式来创建匿名函数

1.1关于 lambda表达式的说明

  • lambda 是一个表达式,而不是一个代码块,仅仅能在 lambda 表达式中封装有限的逻辑
  • lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数

1.2关于 lambda表达式的语法

 使用 lambda 关键字 后面是参数列表 :表达式  
 lambda 默认是有返回值的 
 如下:
 lambda 参数列表 : 表达式  默认 return

1.3 例子:

  • 1.3.1例子1:
lambda a,b : a + b 

这就是个简单的 lambda 表达式 传入参数 a,b, 然后进行运算,返回 a + b 的值

num  = lambda a,b : a + b
print(num(1,2))  #结果输出3

有点基础的应该都会明白是什么意思

  • 1.3.1例子2

再来深入一点,分析下面的代码

 def operation(a,b,opt):  #把 lambda 当参数传入
     result = opt(a,b)
     return  result

 result = operation(10,10,lambda a,b : a + b)
 print(result)

这里有一个自定义函数,operation,接收3个参数, a,b,opt,然后看调用的地方传入的值,10 对应 a ,后面的10对应 b ,最后是一个 lambda 表达式,对应最后的 opt,这里是把 lambda 当成了一个参数传入了自定义的operation函数内,在operation 里面把接收到的两个10,再传入 opt 也就是 lambda中 最后返回运算出来的结果

  • 1.3.3例子3

下面来个进阶

students = [
    {'name':'zhangsan','age':17},
    {'name':'lisi','age':19},
    {'name':'wanger','age':15}
]

有这样一个列表,列表中的每个元素是一个字典,我想对 age 进行排序,然后输出,如果单独写一个函数的话其实也是能实现的,不过用 lambda 的话就会更简洁与方便

students.sort(key = lambda x : x['age'])
print(students)

输出结果

[{'name': 'wanger', 'age': 15}, {'name': 'zhangsan', 'age': 17}, {'name': 'lisi', 'age': 19}]

关于'key'
从python2.4开始,list.sort()和sorted()函数增加了key参数来指定一个函数,此函数将在每个元素比较前被调用

key参数的值为一个函数,此函数只有x一个参数,且返回age的值用来进行比较

也就是说在 sort的时候,第一次获取第一个元素,然后当做参数传入到 key 指定的函数里, 在key 指定的函数里,获取第一个元素里面的 age的值,并返回, 然后,再获取第二个元素,第三个元素,.....全部获取完之后,再进行排序,

是不是有点晕,一开始我也很晕,慢慢试着理解一下.就会容易接受了
可能我的理解也有不对的地方,若有大神看到请及时指点小弟,免得一直走歪路

相关文章

  • Python3.+匿名函数

    1.匿名函数 1.1关于 lambda表达式的说明 lambda 是一个表达式,而不是一个代码块,仅仅能在 lam...

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

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

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

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

  • Day10 函数

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

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

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

  • 总结Day10_函数提升

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

  • PHP全栈学习笔记32

    php自定义函数之匿名函数所谓匿名,就是没有名字。匿名函数,也就是没有函数名的函数。 变量函数式的匿名函数 内部函...

  • PHP全栈学习笔记32

    php自定义函数之匿名函数所谓匿名,就是没有名字。匿名函数,也就是没有函数名的函数。 变量函数式的匿名函数 内部函...

  • Kotlin - 函数解析

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

  • Day_10-函数(二)

    一、匿名函数 1.什么是匿名函数?定义:匿名函数还是函数,只是声明格式不同适用:函数功能比较简单的函数 2.匿名函...

网友评论

    本文标题:Python3.+匿名函数

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