logo

Ce este tastarea de rață în Python?

În acest tutorial, vom învăța despre tastarea de rață. Este un termen popular în Python și provine din a spune: „Dacă se plimbă ca o rață, dacă înoată ca o rață, dacă arată ca o rață, atunci probabil că ar trebui să fie o rață”.

Declarația de mai sus oferă o idee pentru a identifica o rață. Aici nu trebuie să avem o secvență genomică a raței. Concluzia ne tragem prin comportamentul și aparențele exterioare.

Vom discuta ce înseamnă exact tastarea de rață în programarea Python.

Python urmează EAFP (Mai ușor să ceri iertare decât permisiunea) mai degrabă decât LBLY (Uită-te înainte de a sări) filozofie. EAFP este oarecum legat de stilul „dactilografiere”.

Tastare dinamică vs. statică

Motivul principal pentru utilizarea tastării cu rață este acela de a oferi suport pentru tastarea dinamică Programare Python . În Python, nu trebuie să specificăm tipul de date al variabilei și putem reatribui diferitele valori ale tipului de date aceleiași variabile în codul suplimentar. Să vedem următorul exemplu.

Exemplu -

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

Ieșire:

listă imuabilă
 

După cum putem vedea în codul de mai sus, am atribuit un număr întreg unei variabile x, făcându-l din int tip. Apoi, am atribuit un șir și o listă aceleiași variabile. Interpretul Python acceptă modificările tipurilor de date ale aceleiași variabile. Acesta este un comportament de tastare dinamic.

Multe alte limbaje de programare, cum ar fi Java, swift sunt de tip static. Trebuie să declarăm variabile cu tipurile de date. În exemplul de mai jos, încercăm să facem același lucru folosind Swift în loc de Python.

Exemplu -

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

Codul de mai sus nu poate fi compilat, deoarece nu am putut aloca un șir în limbajul Swift. Pentru că variabilă A a fost declarat ca un întreg.

structura java

Conceptul de tastare de rață

Mai devreme, am discutat că Python este un limbaj tip dinamic. Cu toate acestea, putem folosi abordarea dinamică cu tipuri de date personalizate. Să înțelegem următorul exemplu.

Exemplu -

 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) 

Ieșire:

 Compiling Running Spell Check Convention Check 

În codul de mai sus, am creat un Studio vizual clasa care trebuie a executa() metodă. În clasa desktop, am trecut ide-ul ca argument în code(). Un merge este un obiect al Studio vizual clasă. Cu ajutorul lui ide, am numit a executa() metoda clasei VisualStudio.

Să vedem un alt exemplu.

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

Ieșire:

 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' 

În codul de mai sus, instanța clasei Duck este reflectată prin apelare testul de rață funcţie. Se întâmplă și cu clasa Sparrow, care implementează înot() funcţie. Dar, în cazul clasei Crocodile, eșuează evaluarea testării rațelor deoarece nu implementează înot() funcţie.

șir java la json

Cum acceptă EAFP tastarea cu rață

Tastarea de rață este stilul cel mai potrivit pentru EAFP, deoarece nu trebuie să ne concentrăm asupra 'tip' a obiectului. Trebuie doar să avem grijă de el comportament și capacitatea . Să vedem următoarele afirmații.

Când vedem o mulțime de blocuri if-else, atunci este un stil de codare LBYL.

Dar dacă vedem o mulțime de blocuri cu excepția încercării, atunci este probabil un codificator EAFP.