logo

Was ist Duck-Typing in Python?

In diesem Tutorial lernen wir etwas über das Duck-Typing. Es ist ein beliebter Begriff in Python und kommt von: „Wenn es wie eine Ente geht, schwimmt wie eine Ente, wie eine Ente aussieht, dann sollte es wahrscheinlich eine Ente sein.“

Die obige Aussage gibt eine Idee, eine Ente zu identifizieren. Hier brauchen wir keine Genomsequenz der Ente. Wir ziehen unsere Schlussfolgerung aus seinem Verhalten und seinem äußeren Erscheinungsbild.

Wir werden besprechen, was genau das Duck-Typing in der Python-Programmierung bedeutet.

Python folgt dem EAFP (Es ist einfacher, um Verzeihung als um Erlaubnis zu bitten) statt der LBLY (Look Before You Leap) Philosophie. Das EAFP ist in gewisser Weise mit dem „Duck-Typing“-Stil verknüpft.

Dynamische vs. statische Typisierung

Der Hauptgrund für die Verwendung von Duck-Typing besteht darin, dynamisches Tippen zu unterstützen Python-Programmierung . In Python müssen wir den Datentyp der Variablen nicht angeben und können die verschiedenen Datentypwerte im weiteren Code derselben Variablen neu zuweisen. Sehen wir uns das folgende Beispiel an.

Beispiel -

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

Ausgabe:

gegnerische Suche
 

Wie wir im obigen Code sehen können, haben wir einer Variablen x eine Ganzzahl zugewiesen und sie so zu der gemacht int Typ. Dann haben wir derselben Variablen eine Zeichenfolge und eine Liste zugewiesen. Der Python-Interpreter akzeptiert die Änderungen von Datentypen derselben Variablen. Dies ist ein dynamisches Tippverhalten.

Viele andere Programmiersprachen wie Java und Swift sind vom statischen Typ. Wir müssen Variablen mit den Datentypen deklarieren. Im folgenden Beispiel versuchen wir, dasselbe mit Swift anstelle von Python zu tun.

Beispiel -

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

Der obige Code kann nicht kompiliert werden, da wir in der Swift-Sprache keinen String zuweisen konnten. Weil variabel A wurde als Ganzzahl deklariert.

cdr vollständiges Formular

Konzept der Enteneingabe

Zuvor haben wir besprochen, dass Python eine dynamisch typisierte Sprache ist. Wir können jedoch den dynamischen Ansatz mit benutzerdefinierten Datentypen verwenden. Lassen Sie uns das folgende Beispiel verstehen.

Beispiel -

 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) 

Ausgabe:

 Compiling Running Spell Check Convention Check 

Im obigen Code haben wir eine erstellt VisualStudio Klasse, die muss ausführen() Methode. In der Desktop-Klasse haben wir die Idee als Argument im Code() übergeben. Ein es geht ist ein Objekt von VisualStudio Klasse. Mit Hilfe von ide haben wir das angerufen ausführen() Methode der VisualStudio-Klasse.

Sehen wir uns ein weiteres Beispiel an.

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

Ausgabe:

 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' 

Im obigen Code wird die Instanz der Duck-Klasse durch den Aufruf widergespiegelt das duck_testing Funktion. Das passiert auch mit der Sparrow-Klasse, die das implementiert schwimmen() Funktion. Aber im Fall der Crocodile-Klasse besteht sie die Duck-Test-Auswertung nicht, weil sie das nicht implementiert schwimmen() Funktion.

Wie Duck Typing EAFP unterstützt

Das Duck-Typing ist der am besten geeignete Stil für das EAFP, da wir uns nicht auf das konzentrieren müssen 'Typ' des Objekts. Wir müssen uns nur darum kümmern Verhalten Und Fähigkeit . Sehen wir uns die folgenden Aussagen an.

Wenn wir viele if-else-Blöcke sehen, handelt es sich um einen LBYL-Codierungsstil.

Gimp Wasserzeichen entfernen

Wenn wir jedoch viele Try-Except-Blöcke sehen, handelt es sich höchstwahrscheinlich um einen EAFP-Codierer.