一些python高级语法

enum枚举是一个类。
from enum import Enum
class vip(Enum):
GREEN=1
print(vip.GREEN.value)通过.value访问GREEN标签对应值
.name获取标签名
枚举类型,枚举名字,枚举值是三个概念

for v in vip:
print(v)
遍历枚举类型

result== vip.GREEN==2将得到false,因为枚举本身与枚举数值不同
枚举类型不支持大小比较,支持等值比较 ==
枚举两个值相同,则第二个枚举是第一个的别名(两个数值相同实际上代表一种枚举类型)
for v in vip.__members __: print(v)
遍历枚举成员

枚举类型转换:类名(变量) 自动返回变量值所对应的枚举类型

from enum import IntEnum (限制枚举类型为整型)
from enum import unique(引入unique装饰器,不允许枚举数值相同)

函数式编程:
python中一切皆对象,函数只是一段可执行的代码

def curve_pre():
  a=25
  def curve(x):
        return a*x
  return curve

f=curve_pre()
(函数作为另一个函数的返回值)

闭包=函数+环境变量
print(f.__closure __)查看闭包
def f1():
a=10
def f2():
a=20
print(a)
print(a)
f2()
print(a)

a=20是一个局部变量

origin=0
def go(step):
#global origin
new_pos=origin+step
#origin=new_pos
return origin
origin在函数内无法找到,会自动到全局变量中寻找,即找到origin=0;但在函数内定义局部变量origin的值后,python不会再去寻找全局变量origin的值;使用global关键字,可以从函数内部修改全局变量。
orgin=0
def fac(pos):
def go(step):
nonlocal pos #nonlocal强制声明pos不是一个本地局部变量
new_pos=pos+step
pos=new_pos
return new_pos
return go
tour=fac(origin)
print(tour(2)) #2即为step的值
print(tour(3)) #3即step的值
闭包记住了上一次运行的状态,且不改变全局变量的值

匿名函数 lambda表达式
lambda para_list: expression;如f=lambda x,y:x+y print(f(1,2))
冒号后只能是表达式,不能在lambda表达式后用赋值操作

三元表达式
x>y?x:y x若大于y则取x值否则取y值
即 r=x if x>y else y

map类,接收两个参数(func函数,list序列),返回map对象
list_x=[1,2,3,4,5,6]
def square(x):
return x*x
r=map(square,list_x)
返回值r为list_x中所有值的平方
map对传入序列中的每一项执行函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值