Red de conocimiento informático - Problemas con los teléfonos móviles - Empaquetado de código fuente de Python

Empaquetado de código fuente de Python

Este artículo proviene de Code Classmate Software Testing.

Cuenta oficial de WeChat de Code Classmate: pruebas de software automatizadas.

Compañero de código Tik Tok nº1: Pruebas del software Geliao.

Decorador

El decorador de Python es una de las preguntas más frecuentes en las entrevistas. Si su currículum describe Python, probablemente le preguntarán al respecto.

Entonces, ¿cómo deberíamos responder a esta pregunta?

Aquí te explicaré el papel del decorador desde varios ángulos. Puedes elegir el que más te convenga.

El decorador en Python es esencialmente una función de orden superior, donde la designación de una función de orden superior es "una función cuyo valor de retorno es una función"

Hay dos componentes al uso de decoradores en la parte de Python.

①El símbolo @ llama al decorador.

②Define el método a decorar.

El ejemplo es el siguiente:

@nombre del decorador

Defina una función de decoración.

@logger

Definir función():

Pasar

Los decoradores pueden agregar funcionalidad adicional sin modificar la funcionalidad. Esta es la definición oficial de decorador.

De hecho, utilizaremos decoradores para implementar algunos requisitos auxiliares más allá de las funciones comerciales. Por ejemplo, agregaremos registro, monitoreo del rendimiento y contadores integrados a nuestra funcionalidad. Como todos sabemos, modificar funciones escritas es muy problemático y propenso a errores. Por tanto, es muy adecuado para "encapsular algunas funciones adicionales para funciones sin modificar su código interno", es decir, decoradores.

Staticmethod se utiliza para modificar métodos en una clase para que se pueda acceder a ellos directamente usando el nombre de la clase, como cls.foo().

El método de clase es similar al método estático, pero la diferencia es que el método estático pasará la clase al método modificado.

Clase A (objeto):

a = 1

def __init__ (self):

Self. a = 2

@método estático

def foo1():

Imprimir

@métodoclase

def foo2(cls):

Imprimir "Clase a es", cls.a

Imprimir "Instancia a es", cls(). a

Notas del curso de prueba de software Free Code Classmates, materiales de súper aprendizaje, videos completos, las últimas preguntas de la entrevista, artículos que se pueden reenviar, mensaje privado "Code Classmates 666" para obtener información.

La propiedad puede realizar el acceso a funciones y la asignación a propiedades, de modo que algunas funciones, como la verificación de parámetros, se pueden agregar a la función. Los métodos de acceso y asignación no cambiarán cuando se usen externamente. Tenga en cuenta que los nombres de los métodos de acceso y asignación son los mismos.

Clase A (objeto):

def __init__( self):

Self. __count = 0

@property

definir recuento(self):

devolver self. _ _count

@count. compositor

defina recuento(self, valor):

si no es instancia(valor, int):

raise ValueError ('¡el recuento debe ser un número entero!' )

Yo mismo.

_ _count=value

a = A()

Imprimir un recuento

a.count = 1

Imprimir un recuento

a.count = 1

Imprimir un recuento

p>

a.count = "a" #Error de aumento de valor

Functools.wraps se utiliza en el código decorador. Puede copiar el nombre y otros atributos de la función original a la función wrapper(), de modo que pueda obtener los atributos de nombre de la función real en lugar del contenedor.

Importar herramientas de funciones

Definir registro (texto):

Definir decorador (función):

@functools.wraps (func )

definir wrapper(*args, **kw):

Imprimir "s s(): "(texto, func.__name__)

Función de retorno ( * args, **kw)

Contenedor de retorno

Decorador de retorno

#!/anaconda 3/envs/FeAl py/bin python 3.7

# -*-Codificación: utf-8 -*-

# -

# @File: sintaxis del decorador py

# @author :Bull.

# -

#Definir función de decoración

# 1. Ejemplo de decoración simple

Def logger(func):# En Python todo es un objeto.

Definir empaquetado (*args, **kw):

Print("Ingrese la función decorada")

Func(*args, **kw) # Llama a la función real en el decorador.

func(*args, **kw)

Imprimir("Función de decoración completada")

Volver al paquete

@logger # =logger(add)

def add(x, y):

Print("Ingresar función modificada")

print(f'{x } {y}={x y} ')

#Adición (1, 2)

# 2. Decorador con parámetros

def say_hello(country):

Definir contenedor (función):

def second(*args, **kw):

Si país == 'China':

Imprimir("Saludos del decorador")

elif contry == ' américa ':

Imprimir("Hola" del decorador)

En caso contrario:

Retorno

func(*args, **kw)

Retorno segundo

Retorno de retorno

@say_hello ('América')

def american():

print("Soy de Estados Unidos")

@ say_hello('China')

def China():

Imprimir("Soy de China")

Americano()

Imprimir(' * '*30)

China()

Fin

Los derechos de autor de este artículo pertenecen al autor. Para cualquier forma de reimpresión, comuníquese con el autor para obtener autorización e indique la fuente.