Python 入门基础 - 高级用法

枚举类型 python2 不支持枚举。。

Pyhon3 新引入枚举

枚举实质就是个类

三元表达式

x大于y, 返回x, 否则返回 y

Java:

x>y ? x : y

Python:条件为真时返回的结果 if 条件判断 else 条件为假时的返回结果

x if x>y else y

Python 入门基础 - 高级用法

函数式编程:闭包

闭包是一种思维方式, 减少全局变量的改变

闭包 = 函数+环境变, 在第35行返回一个数,第36行要返回一个函数,才能生成闭包

意义:保存函数现场

Python 入门基础 - 高级用法

对闭包的理解:

Python 入门基础 - 高级用法

 

闭包实例:

使用非闭包形式:

Python 入门基础 - 高级用法

使用闭包形式(python3),避免了更改全局变量的方式

Python 入门基础 - 高级用法

 

匿名函数 Lamda, 如下图所示,将一个lambda 匿名函数 赋值给一个变量f

Python 入门基础 - 高级用法

冒号后面是表达式,不能是一个赋值函数或者代码块等 , 一般会接入一个三元表达式

Python 入门基础 - 高级用法

 

map 类, 理解为一个映射 (也可以理解为一个for循环)

Python 入门基础 - 高级用法

 

map 和 lambda 一起使用:

与上面的square实现的是同样的内容,但相比更加简洁

Python 入门基础 - 高级用法

python 3:

Python 入门基础 - 高级用法

map lambda 并不能提高运行效率, 只是使得代码更加简洁一些

 

reduce 函数,连续调用lambda,将上一次计算结果当作输入 给x,另外一个列表的值 作为y 

((((1+2)+3)+4)+5)+6)...

Python 入门基础 - 高级用法

10 作为reduce初始值,运算时,x=10, y=1, 是先加10, 而不是等都算完了之后 再加10的

Python 入门基础 - 高级用法

 

Filter , 筛选

Python 入门基础 - 高级用法

filter / map 均返回list,

reduce 返回一个值

 

装饰器