BetterManEddy

导航

 

列表生成式:

L = [x *x for x in range(10)]

生成器:

开门见山,直接上代码了解生成器的作用:(减少内存的占用)

g = (x * x for x in range(10))
for i in g:
    print(i)

绝大多数可以通过for循环进行迭代;

迭代器:

一类是集合数据类型,如listtupledictsetstr

一类是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()

  

posted on 2020-04-14 16:06  BetterManEddy  阅读(42)  评论(0)    收藏  举报