# from enum import Enum # 枚举 # class VIP(Enum): # YELLOW = 1 # YELLOW_ALIAS = 1 # 别名 # GREEN = 2 # BLACK = 3 # RED = 4 # print(VIP.GREEN) # VIP.GREEN8VIP.GREEN # print(VIP.GREEN.name) # GREEN # print(VIP['GREEN']) # VIP.GREEN # for v in VIP: # print(v) # VIP.YELLOW # VIP.GREEN # VIP.BLACK # VIP.RED # for v in VIP.__members__.items(): # print(v) # ('YELLOW', <VIP.YELLOW: 1>) # ('YELLOW_ALIAS', <VIP.YELLOW: 1>) # ('GREEN', <VIP.GREEN: 2>) # ('BLACK', <VIP.BLACK: 3>) # ('RED', <VIP.RED: 4>) # for v in VIP.__members__: # print(v) # YELLOW # YELLOW_ALIAS # GREEN # BLACK # RED # result = VIP.GREEN == VIP.BLACK # print(result) # False # result = VIP.GREEN == 2 # print(result) # False # result =VIP.GREEN is VIP.GREEN # print(result) # True # a = 1 # print(VIP(a)) # VIP.YELLOW # from enum import IntEnum # class VIP(IntEnum): # YELLOW = 1 # GREEN = 2 # BLACK = 'str' # RED = 4 from enum import IntEnum,unique @unique class VIP(IntEnum): YELLOW = 1 GREEN = 2 BLACK = 1 RED = 4
# 闭包=函数 + 环境变量 # def curve_pre(): # a = 25 # 环境变量 # def curve(x): # # print('this is a function') # return a*x*x # return curve # f = curve_pre() # print(f(2)) # 100 # b = 10 # def f1(x): # return b * x * x # print(f1(2)) # 40 # a = 10 # f = curve_pre() # print(f(2)) # 100 # print(f.__closure__) # (<cell at 0x00F1C2D0: int object at 0x65DDE490>,) # print(f.__closure__[0].cell_contents) # 25 # c = 25 # def curve_pre(): # def curve(x): # # print('this is a function') # return c*x*x # return curve # c = 10 # f = curve_pre() # print(f(2)) # 40 # def f1(): # a = 10 # def f2(): # a = 20 # print(a) #2. 20 # print(a) #1. 10 # f2() # print(a) #3. 10 # f1() # def f1(): # a = 10 # def f2(): # a = 20 # return a # return f2 # f = f1() # print(f) # <function f1.<locals>.f2 at 0x02AC5198> # print(f.__closure__) # None # def f1(): # a = 10 # def f2(): # return a # return f2 # f = f1() # print(f) # <function f1.<locals>.f2 at 0x03995198> # print(f.__closure__) # (<cell at 0x01E0C270: int object at 0x65DDE3A0>,) # origin = 0 # def go(step): # new_pos = origin + step # # origin = new_pos # return origin # print(go(2)) # 0 # print(go(3)) # 0 # print(go(6)) # 0 # 非闭包的实现 # origin = 0 # def go(step): # global origin # new_pos = origin + step # origin = new_pos # return origin # print(go(2)) # 2 # print(go(3)) # 5 # print(go(6)) # 11 # 闭包的实现 origin = 0 def factory(pos): def go(step): nonlocal pos new_pos = pos + step pos = new_pos return new_pos return go tourist = factory(origin) print(tourist(2)) # 2 print(tourist(3)) # 5 print(tourist(6)) # 11