列表生成式:
L = [x *x for x in range(10)]
生成器:
开门见山,直接上代码了解生成器的作用:(减少内存的占用)
g = (x * x for x in range(10)) for i in g: print(i)
绝大多数可以通过for循环进行迭代;
迭代器:
一类是集合数据类型,如list、tuple、dict、set、str等
一类是generator,包括生成器和带yield的generator function
提到装饰器,就很有必要先聊匿名函数以及嵌套函数
匿名函数:可以传内存地址到已存在函数名
嵌套函数:函数里面套用套数,达到暂时不执行的效果
装饰器:
user_status = False
def login(func):
def inner(*args, **kwargs):# 嵌套一层函数
_username = "eddy"
_password = "123456"
global user_status
if user_status == False:
username = input("user:\n")
password = input("pasword:\n")
if username == _username and password == _password:
print("welcome login....")
user_status = True
else:
print("wrong username or password!")
if user_status == True:
func(*args, **kwargs) # 看这里看这里,只要验证通过了,就调用相应功能
return inner # 用户调用login时,只会返回inner的内存地址,下次再调用时加上()才会执行inner函数
def home():
print("this is an amazing website")
@login
def america():
# login() #执行前加上验证
print("----混蛋专区----")
def japan():
print("----熟女专区----")
@login
def henan(style):
print("----骗子专区----")
home()
america()
japan()
浙公网安备 33010602011771号