枚举类型 python2 不支持枚举。。
Pyhon3 新引入枚举
枚举实质就是个类
三元表达式
x大于y, 返回x, 否则返回 y
Java:
x>y ? x : y
Python:条件为真时返回的结果 if 条件判断 else 条件为假时的返回结果
x if x>y else y
函数式编程:闭包
闭包是一种思维方式, 减少全局变量的改变
闭包 = 函数+环境变, 在第35行返回一个数,第36行要返回一个函数,才能生成闭包
意义:保存函数现场
对闭包的理解:
闭包实例:
使用非闭包形式:
使用闭包形式(python3),避免了更改全局变量的方式
匿名函数 Lamda, 如下图所示,将一个lambda 匿名函数 赋值给一个变量f
冒号后面是表达式,不能是一个赋值函数或者代码块等 , 一般会接入一个三元表达式
map 类, 理解为一个映射 (也可以理解为一个for循环)
map 和 lambda 一起使用:
与上面的square实现的是同样的内容,但相比更加简洁
python 3:
map lambda 并不能提高运行效率, 只是使得代码更加简洁一些
reduce 函数,连续调用lambda,将上一次计算结果当作输入 给x,另外一个列表的值 作为y
((((1+2)+3)+4)+5)+6)...
10 作为reduce初始值,运算时,x=10, y=1, 是先加10, 而不是等都算完了之后 再加10的
Filter , 筛选
filter / map 均返回list,
reduce 返回一个值
装饰器 -- AOP 思想 (面向切面编程)
没有改变原来的调用方式, 如果不用装饰器,也可以用其它方式实现,但在调用时 需要改变调用函数
不需要参数的:
===>
这里抽象参数 装饰器的参数不确定会 所以定义了 多参数列表:
*args 多参数
*kw 关键参数
===>
装饰器体现了 不破坏代码实现 代码逻辑更新
常见用法:flask?。。@api.route