[Introducción a la inteligencia artificial] Biblioteca estándar de Python: escritura (anotación de tipo), afirmación de afirmación, decorador @property y decorador de establecimiento, *args y **kwargs, método integrado __str_ en las clases de Python

[Introducción a la inteligencia artificial] Biblioteca estándar de Python: escritura (anotación de tipo), aserción, decorador @property y decorador setter, *args y **kwargs, método integrado __str__ en las clases de Python


1. Introducción a la mecanografía

  • Como todos sabemos, Python es un lenguaje débilmente tipado. En la mayoría de los casos, es difícil saber el tipo de parámetro de la función o el tipo de valor de retorno. Esto puede llevar a olvidar qué parámetros necesita pasar la función y qué tipo de resultado se devuelve después. un período de tiempo, causando problemas innecesarios. El módulo de escritura puede resolver este problema muy bien.
  • Las principales funciones de mecanografiar son:
  1. Como explicación adicional en el documento de desarrollo, es conveniente que los usuarios comprendan los tipos de parámetros pasados ​​y devueltos al usarlo.
  2. La verificación de tipos evita inconsistencias en los tipos de parámetros y valores de retorno durante el tiempo de ejecución. Agregar módulos no afectará la ejecución del programa y no se informarán errores formales. Pycharm admite la escritura y aparecerá una advertencia amarilla al verificar los errores.
  • gramática:
def 函数名(参数名: 数据类型) -> 返回值类型:
    pass

变量名: 数据类型 = 变量值
  • Tipos de etiquetas comunes:
  • Unión: Unión [X, Y] significa que las variables (parámetros) son de tipo X o Y.
  • Opcional: Opcional[X] es equivalente a Unión[X, Ninguno], es decir, permite que las variables (parámetros) sean Ninguno de forma predeterminada.
  • Tupla: por ejemplo: persona: Tuple [str, int, float] = ('Mike', 22, 1.75), lo que indica que persona es una tupla y sus tipos de elementos internos son str, int, float respectivamente.
  • Lista: Ejemplo: var: Lista[int o float] = [2, 3.5], indica que var es una lista, y sus elementos internos pueden ser de tipo int o float; var: Lista[List[int]] = [[ 1, 2], [2, 3]], obviamente solo se usan en combinación.
  • Dict: Ejemplo: dic: Dict[str, int], indica que dic es un diccionario con claves de tipo str y valores de tipo int.
  • Secuencia: En algunos casos no es necesario distinguir estrictamente si una variable o parámetro es de tipo lista o de tipo tupla, en este caso se puede utilizar un tipo más general, llamado Secuencia, cuyo uso es similar a Lista.

2. afirmar afirmación

  • La afirmación se usa generalmente en la depuración de código para determinar la exactitud del código siguiente. Si se cumple la condición (correcto), el programa se ejecutará automáticamente hacia atrás. Si no se cumple la condición (error), el programa actual se interrumpirá y generar un error de aserción.
  • Ejemplo:
a = -1
assert a < 0
assert a > 0

Insertar descripción de la imagen aquí

3. @property decorador y decorador setter

  • Ejemplos e introducción:
  • Python proporciona @property装饰器、setter装饰器métodos decorados que pueden usarse como atributos.
  • Por ejemplo: definir una Examclase, para evitar _scoreoperar directamente las propiedades internas y property装饰器、setter装饰器lograr el control indirecto de las propiedades a través de los métodos proporcionados, esto desempeña el papel de encapsulación, ocultando algunas propiedades que no quieren estar expuestas al mundo exterior. Y solo proporciona métodos para que los usuarios operen. En el método, puede verificar la racionalidad de los parámetros, etc.
class Exam(object):
    def __init__(self, score):
        self._score = score
 
    @property
    def score(self): # 属性访问
        return self._score

    @score.setter
    def score(self, val): # 属性赋值
        if val < 0:
            self._score = 0
        elif val > 100:
            self._score = 100
        else:
            self._score = val
 
if __name__ == '__main__':
	e = Exam(60)
	print(e.score)
 
	e.score = 90
	print(e.score)
 
	e.score = 200
	print(e.score)

4. *argumentos y **kwargs

  • Ambos son parámetros variados en Python.
  • Vale la pena señalar que argsla suma kwargsse puede modificar a voluntad, la atención se centra en *la suma **.
  • *args : 在传入的参数个数未知,且不需要知道参数名称时使用,它将参数保存成一个元组,元组名为args 。
  • **kwargs : 在传入参数个数未知,但需要知道参数的名称时使用,它将数据保存成一个字典,字典名为kwargs 。
  • Ejemplo:
def args_test(data1, *args, **kwargs):
    print('data1: ',data1)
    print('args:', args)
    print('type_of_args: ', type(args))
    print('kwargs: ' , kwargs)
    print('type_of_kwargs:' ,type(kwargs))
    
args_test(1,2,3,4,5,k1=6,k2=7,k3=8)

Insertar descripción de la imagen aquí

5. Método integrado __str__ en la clase Python

  • Función: Devuelve la información de descripción del objeto, utilizada cuando sale la función de impresión.
  • Tiempo de llamada: print(对象) cuando se utiliza el objeto de impresión, se llamará automáticamente.
  • Aviso:
  1. Si el método __str__() no está definido, la dirección de referencia del objeto se imprime de forma predeterminada, que es la dirección del espacio de almacenamiento de la variable del objeto en la memoria.
  2. Si se define el método __str__(), lo que se imprime es el valor de retorno del método.
  3. El método __str__ debe devolver una cadena de datos.
  • Ejemplo:
class str_test():
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return 'name:%s'%self.name

name = str_test('Tom')
print(name)

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44928822/article/details/131290633
Recomendado
Clasificación