python基础篇(四)

一、装饰器

 装饰器:在不改变原程序代码和调用方式的情况下,使其新增加功能的函数

先来一段代码

user,passwd = 'cuix','123456'

def add_login(func):
    def add():
        username = input("Username >>:").strip()
        password = input("Passwrod >>:").strip()
        if user == username and passwd == password:
            print('登陆成功!')
            func()
        else:
            print('用户名或密码错误!')
    return add

@add_login
def home():
    print('welcome Home!')

home()

# 执行结果如下
Username >>:cuix
Passwrod >>:123456
登陆成功!
welcome Home!

# 如果不在home()函数上面加@add_login则只会输出'welcome Home!'
# 而加了@add_login,刚会在home()原先的输出基础上增加了另一函数的功能,
# 这就是装饰器的功能

 再来一个个带参数的装饰器

# @Time    : 2017/3/23 15:50
# @Author  : Cui X

user,passwd = 'cuix','123456'

def add_login(name):
    def login(func):
        def add(*args, **kwargs):
            if name == 'local':
                username = input("Username >>:").strip()
                password = input("Passwrod >>:").strip()
                if user == username and passwd == password:
                    print('使用local方式登陆成功!')
                    func(*args, **kwargs)
                else:
                    print('用户名或密码错误!')
            else:
                print('不是local')
        return add
    return login


@add_login('local')
def home():
    print('welcome Home!')

home()

# 输出结果
Username >>:cuix
Passwrod >>:123456
使用local方式登陆成功!
welcome Home!
带参数的装饰器

 

二、列表生成式&&生成器

 列表生成式

# 把列表中的元素都加1
a = [0,1,3,5,7,9,11]

for i,j in enumerate(a):
    a[i] += 1

print(a)
[1,2,4,6,8,10,12]

# 生成列表
b = [x for x in range(10)]

print(b)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 生成器

 生成器是调用一个生成器函数(generator function)返回的对象,多用于集合对象的迭代

三、迭代器
顶替

四、软件目录结构规范

顶替

posted on 2017-03-13 10:24  奋斗德路  阅读(189)  评论(0)    收藏  举报