# Trabajo:
# 1, para explicar la clase ha escrito decorador de referencia dictado listo mañana
def auth (tipo_bd): def deco (func): def envoltura (* args, ** kwargs): nombre = input ( ' Su nombre: >>> ' ) .strip () pwd = input ( ' su contraseña >>> : ' ) .strip () si tipo_bd == ' archivo ' : print ( ' 基于文件的验证' ) si el nombre == ' Egon ' y pwd == ' 123 ' : realmente = FUNC (* args, ** kwargs) # índice (1,2) de retorno RES la persona : Imprimir ( ' contraseña de usuario o un error ' ) elif tipo_bd == ' mysql ' : Imprimir ( ' autenticación basada de mysql ' ) elif tipo_bd == ' LDAP ' : Imprimir ( ' basado en la autenticación LDAP ' ) de la otra : imprimir ( ' 不支持该tipo_bd ' ) de retorno envoltorio volver deco @auth (tipo_bd = ' archivo ' ) # @deco # index = deco (índice) Índice # = envoltura def index (x, y): impresión ( ' en índices> >% s:% s ' % (x, y)) @auth (tipo_bd = ' mysql ' ) # @deco # = casa deco (casa) # = casa envoltorio def casa (nombre): print ( ' Inicio - >> % s ' % nombre) @auth (tipo_bd = ' LDAP ' ) # cuenta de origen es la contraseña LDAP DEF Transferencia (): Imprimir ( ' Transferencia ' )
# 2: ¿Recuerdas los conceptos que utilizamos objeto de función para producir una función de diccionario de operar el equipo, Vamos, vamos, tenemos una práctica en el taller,
# al principio del archivo declarar un diccionario vacío, y luego añadir adornos delante de cada función , una operación de terminación se añade automáticamente al diccionario
info = {} def make_dic (Func): def envoltorio (* args, ** kwargs): res = func (* args, ** kwargs) nombre = func. __name__ info [nombre] = func retorno res vuelven envoltorio @make_dic def transferencia (): print ( ' transferencia ' ) @make_dic def : login () print ( ' entrada ' ) de transferencia () de inicio de sesión () print (info) info [ ' Transfer ' ] () # del diccionario utilizando tecla para invocar la función '' ' resultados: Transferencia de sesión {' transferencia ': <función de transferencia en 0x100c829d0>,' Login ': <función de inicio de sesión en 0x100c82a60>} Transferencia Proceso de acabado 0 código de salida con '' '
# 3, escriba el decorador registro de implementar las funciones tales como: Una vez que el camino 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
Nota: formato de tiempo de adquisición
importación tiempo time.strftime ( ' % Y-% m-% d% X ' ) de importación tiempo def log_v (PATH): def add_log (func): def envoltura (args *, ** kwargs): res = func (* args , ** kwargs) con abierto (path, ' ab ' ) como log_f: log_f.write ( ' {} {} run \ n ' .formato (time.strftime ( ' % Y-% m-% d% X ' ) , func. __name__ ) .encode ( ' utf-8 ' )) retorno RES retorno warpper retorno add_log @log_v ( ' record.log ' ) DEF func1 (): Imprimir ( ' ejecución func1 ' ) func1 () '' ' resultados: contenido record.log 03/24/2020 18:28:31 RUN Func1 03/24/2020 18:28:33 func1 RUN 03/24/2020 18:28:34 func1 RUN '' '
# 4, sobre la base de una manera iterativa, las cadenas de valor, listas, tuplas, diccionarios, mientras iteración del bucle, establezca el objeto de archivo
def while_get (obj): obj_iterator = obj. __iter__ () mientras Verdadero: try : impresión (. obj_iterator __next__ ()) excepto StopIteration: descanso while_get ( ' 123 ' ) while_get ([ 1,2,3,4 ]) while_get (( 1,2,3 )) while_get ( { ' 1 ' : 1, ' 2 ' : 2 }) while_get ({ 1,2,3 }) con abierto ( 'record.log ' ' rb ' ) como f: while_get (f) ''' 结果: 1 2 3 1 2 3 4 1 2 3 1 2 1 2 3 b'2020-03-24 18:28:31 ejecución func1 \ n ' b'2020-03-24 18:28:33 func1 run \ n' b'2020-03-24 18:28:34 func1 run \ n ' '''
# 5, implementar encargo iterador volumen de funciones
def myrange (inicio, final, paso = 1 ): mientras (empezar < final): rendimiento inicio iniciar + = paso para i en myrange (1,7,2 ): impresión (i) '' ' 1 3 5 '''