logo

¿Qué es escribir pato en Python?

En este tutorial, aprenderemos sobre la escritura de pato. Es un término popular en Python y proviene de decir, 'Si camina como un pato, nada como un pato, parece un pato, entonces probablemente debería ser un pato'.

La afirmación anterior da una idea para identificar un pato. Aquí no necesitamos tener una secuencia genómica del pato. Sacamos nuestra conclusión por su comportamiento y apariencia externa.

Discutiremos qué significa exactamente escribir pato en la programación de Python.

Python sigue el EAFP (Es más fácil pedir perdón que permiso) en lugar del LBLY Filosofía (Mira antes de saltar). La EAFP está un poco ligada al estilo de 'mecanografía de pato'.

Escritura dinámica versus estática

La razón principal para usar la escritura pato es brindar soporte para la escritura dinámica en Programación en Python . En Python, no necesitamos especificar el tipo de datos de la variable y podemos reasignar los diferentes valores de tipo de datos a la misma variable en código adicional. Veamos el siguiente ejemplo.

Ejemplo -

 x = 12000 print(type(x)) x = 'Dynamic Typing' print(type(x)) x = [1, 2, 3, 4] print(type(x)) 

Producción:

Python es numérico
 

Como podemos ver en el código anterior, asignamos un número entero a una variable x, convirtiéndola en En t tipo. Luego, asignamos una cadena y una lista a la misma variable. El intérprete de Python acepta los cambios de tipos de datos de la misma variable. Este es un comportamiento de escritura dinámica.

Muchos otros lenguajes de programación como Java y Swift son de tipo estático. Necesitamos declarar variables con los tipos de datos. En el siguiente ejemplo, intentamos hacer lo mismo usando Swift en lugar de Python.

Ejemplo -

 # integer value assigning in JavaScript var a = 10 # Assinging string in swift a = 'Swift language' 

El código anterior no se puede compilar porque no pudimos asignar una cadena en lenguaje Swift. porque variable a fue declarado como un número entero.

cómo convertir un número entero a una cadena java

Concepto de mecanografía de pato

Anteriormente, hemos comentado que Python es un lenguaje de tipo dinámico. Sin embargo, podemos utilizar el enfoque dinámico con tipos de datos personalizados. Entendamos el siguiente ejemplo.

Ejemplo -

 class VisualStudio: def execute(self): print('Compiling') print('Running') print('Spell Check') print('Convention Check') class Desktop: def code(self, ide): ide.execute() ide = VisualStudio() desk = Desktop() desk.code(ide) 

Producción:

 Compiling Running Spell Check Convention Check 

En el código anterior, hemos creado un Estudio visual clase que tiene que ejecutar() método. En la clase de escritorio, hemos pasado el ide como argumento en el código(). Un va es un objeto de Estudio visual clase. Con la ayuda de ide, llamamos al ejecutar() método de la clase VisualStudio.

c número aleatorio

Veamos otro ejemplo.

Ejemplo - 2

 class Duck: def swim(self): print('I'm a duck, and I can swim.') class Sparrow: def swim(self): print('I'm a sparrow, and I can swim.') class Crocodile: def swim_walk(self): print('I'm a Crocodile, and I can swim, but not quack.') def duck_testing(animal): animal.swim() duck_testing(Duck()) duck_testing(Sparrow()) duck_testing(Crocodile()) 

Producción:

 I'm a duck, and I can swim. I'm a sparrow, and I can swim. Traceback (most recent call last): File '', line 24, in File '', line 19, in duck_testing AttributeError: 'Crocodile' object has no attribute 'swim' 

En el código anterior, la instancia de la clase Duck se refleja llamando el pato_prueba función. También sucede con la clase Sparrow, que implementa el nadar() función. Pero en el caso de la clase Crocodile, no pasa la evaluación de la prueba del pato porque no implementa la nadar() función.

Cómo la escritura de pato apoya a EAFP

El tipo pato es el estilo más apropiado para EAFP porque no necesitamos centrarnos en el 'tipo' del objeto. Sólo tenemos que cuidar de su comportamiento y capacidad . Veamos las siguientes afirmaciones.

Cuando vemos muchos bloques if-else, entonces es un estilo de codificación LBYL.

Pero si vemos muchos bloques try-except, entonces es probable que sea un codificador EAFP.