No participan pitón decorador de aprendizaje y de trabajo iteradores

1, para explicar la clase ha escrito decorador de referencia dictado listo mañana

def auth(db_type):
    def deco(func):
        def wrapper(*args,**kwargs):
            inp_name = input('请输入你的账号:').strip()
            inp_pwd = input('请输入你的密码:').strip()
            if db_type == 'file':
                print('基于文件的验证')
                if inp_name == 'egon' and inp_pwd == '123':
                    res = func(*args,**kwargs)
                    return res
                else:
                    print('账号或密码错误。')
            elif db_type == 'mysql':
                print('基于mysql的验证')
            elif db_type == 'ldap':
                print('基于ldap的验证')
            else:
                print('不支持该db_type')
        return wrapper
    return deco

@auth(db_type='file')
def index(x,y):
    print('from index->> {} and {}'.format(x,y))

@auth(db_type='mysql')
def home(name):
    print('from home->> {}'.format(name))

@auth(db_type='ldap')
def transfer():
    print('from transfer')

index(1,2)
home('vincent')
transfer()

2: Recuerde que cuando se utiliza el concepto de objeto función, haciendo una función de diccionario de operar el equipo, Vamos, vamos, tenemos más práctica en el diccionario grande, vacía en una declaración al principio del archivo, y luego añadir un decorador delante de cada función, completar la operación añade automáticamente al diccionario

cmd_dic = {'0':['退出',exit]}

def func_dic(cmd_dic,cmd_num,usage):
    def deco(func):
        def wrapper(*args,**kwargs):
            res = func(*args,**kwargs)
            return res
        cmd_dic[cmd_num] = [usage,wrapper]
        return wrapper
    return deco

@func_dic(cmd_dic,'1','注册')
def register():
    print('注册功能。')

@func_dic(cmd_dic,'2','登录')
def login():
    print('登录功能。')

@func_dic(cmd_dic,'3','查询余额')
def check_balance():
    print('查询余额功能。')

@func_dic(cmd_dic,'4','提现')
def withdraw():
    print('提现功能。')

@func_dic(cmd_dic,'5','转账')
def transfer():
    print('转账功能。')

while True:
    for k,v in cmd_dic.items():
        print('{:>4}:  {}'.format(k,v[0]))

    cmd = input('请输入命令编号:').strip()
    if not cmd.isdigit():
        print('必须输入数字。')
        continue
    if cmd in cmd_dic:
        cmd_dic[cmd][1]()
    else:
        print('你输入的命令不存在,请重新输入。')

Una vez que la ruta de función f1 a cabo, el mensaje 21/07/2017 11:12:11 f1 carrera se escribe en el archivo de registro, el archivo de registro se puede especificar: 3, escriba el decorador registro de implementar las funciones tales como

Nota: formato de tiempo de adquisición
Tiempo de importación
El time.strftime ( '%% Y-X-M-% D%')

import time

def run_log(log_path):
    def deco(func):
        def wrapper(*args,**kwargs):
            run_time = time.strftime('%Y-%m-%d %X')
            res = func(*args,**kwargs)
            with open(r'{}'.format(log_path),'at',encoding='utf8') as f:
                f.write('{} {} run\n'.format(run_time,str(func).split()[1]))
            return res
        return wrapper
    return deco

@run_log(log_path='run_time.log')
def f1(x,y):
    time.sleep(3)
    print('from f1—>>> {} and {}'.format(x,y))

f1('AA','BB')

4, sobre la base de una manera iterativa, las cadenas de valor, listas, tuplas, diccionarios, mientras iteración del bucle, establecen el objeto de archivo

1) Cadena

str1 = 'addesdels'
str1_iterator = iter(str1)
while True:
    try:
        print(next(str1_iterator))
    except StopIteration:
        break

2) Lista

list1 = [2,3,4,5,6,7]
list1_iterator = iter(list1)
while True:
    try:
        print(next(list1_iterator))
    except StopIteration:
        break

3) tuplas

tup1 = (11,22,33,44,55,66)
tup1_iterator = iter(tup1)
while True:
    try:
        print(next(tup1_iterator))
    except StopIteration:
        break

4) Diccionario

dic1 = {'name':'egon','age':18,'gender':'male'}
dic1_iterator = iter(dic1)
while True:
    try:
        print(next(dic1_iterator))
    except StopIteration:
        break

5) colección

s1 = {111,222,333,444,555,777}
s1_iterator = iter(s1)
while True:
    try:
        print(next(s1_iterator))
    except StopIteration:
        break

6) objeto de archivo

with open('db.txt','rt',encoding='utf8') as f:
    while True:
        try:
            print(next(f),end='')
        except StopIteration:
            break

5, iteradores personalizadas implementan la función gama

def my_range(start,stop,step=1):
    while start<stop:
        yield start
        start += step

for i in my_range(2,10):
    print(i)

Supongo que te gusta

Origin www.cnblogs.com/leilijian/p/12560564.html
Recomendado
Clasificación