logo

Què és escriure ànec a Python?

En aquest tutorial, aprendrem sobre l'escriptura d'ànec. És un terme popular a Python, i prové de dir: 'Si camina com un ànec, neda com un ànec, sembla un ànec, probablement hauria de ser un ànec'.

La declaració anterior dóna una idea per identificar un ànec. Aquí no necessitem tenir una seqüència genòmica de l'ànec. Treurem la nostra conclusió pel seu comportament i aparences externes.

Discutirem què vol dir exactament escriure ànec a la programació Python.

Python segueix el EAFP (Més fàcil demanar perdó que permís) en lloc de LBLY (Mira abans de saltar) filosofia. L'EAFP està una mica lligat a l'estil 'mecanografia d'ànec'.

Tipus dinàmics vs. estàtic

La raó principal per utilitzar l'escriptura d'ànec és proporcionar suport per a l'escriptura dinàmica Programació Python . A Python, no necessitem especificar el tipus de dades de la variable i podem reassignar els diferents valors de tipus de dades a la mateixa variable en un codi addicional. Vegem el següent exemple.

Exemple -

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

Sortida:

programació java de nombres primers
 

Com podem veure en el codi anterior, hem assignat un nombre enter a una variable x, fent-la de la int tipus. Aleshores, hem assignat una cadena i una llista a la mateixa variable. L'intèrpret de Python accepta els canvis de tipus de dades de la mateixa variable. Aquest és un comportament d'escriptura dinàmic.

Molts altres llenguatges de programació com Java, swift són de tipus estàtic. Hem de declarar la variable amb els tipus de dades. A l'exemple següent, intentem fer el mateix amb Swift en lloc de Python.

Exemple -

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

El codi anterior no es pot compilar, perquè no hem pogut assignar una cadena en llenguatge Swift. Perquè variable a es va declarar com un nombre enter.

com obtenir la data actual en java

Concepte de mecanografia d'ànec

Anteriorment, hem comentat que Python és un llenguatge tipificat dinàmic. Tanmateix, podem utilitzar l'enfocament dinàmic amb tipus de dades personalitzats. Entenem l'exemple següent.

Exemple -

 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) 

Sortida:

 Compiling Running Spell Check Convention Check 

En el codi anterior, hem creat un VisualStudio classe que ha de executar () mètode. A la classe d'escriptori, hem passat l'ide com a argument al codi (). An va és un objecte de VisualStudio classe. Amb l'ajuda d'ide, vam anomenar el executar () mètode de la classe VisualStudio.

j e s t

Vegem un altre exemple.

Exemple - 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()) 

Sortida:

 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' 

Al codi anterior, la instància de la classe Duck es reflecteix cridant la prova_ànec funció. També passa amb la classe Sparrow, que implementa el nedar() funció. Però en el cas de la classe Crocodile, falla l'avaluació de la prova d'ànec perquè no implementa la nedar() funció.

Com l'escriptura d'ànec admet EAFP

L'escriptura d'ànec és l'estil més adequat per a l'EAFP perquè no ens hem de centrar en el 'tipus' de l'objecte. Només hem de cuidar-ne comportament i capacitat . Vegem les següents afirmacions.

Quan veiem molts blocs if-else, llavors és un estil de codificació LBYL.

Però si veiem molts blocs de prova, excepte, és probable que sigui un codificador EAFP.