logo

Qu’est-ce que la saisie de canard en Python ?

Dans ce tutoriel, nous allons découvrir la typage canard. C'est un terme populaire en Python, et il vient de dire : 'S'il marche comme un canard, nage comme un canard, ressemble à un canard, alors ce devrait probablement être un canard.'

La déclaration ci-dessus donne une idée pour identifier un canard. Ici, nous n'avons pas besoin d'une séquence génomique du canard. Nous tirons notre conclusion par son comportement et ses apparences extérieures.

Nous discuterons de ce que signifie exactement la saisie de canard dans la programmation Python.

Python suit le EAFP (Plus facile de demander pardon que la permission) plutôt que le LBLY (Regardez avant de sauter). L'EAFP est quelque peu lié au style « duck typing ».

Saisie dynamique ou statique

La principale raison de l'utilisation de la saisie en canard est de fournir une prise en charge de la saisie dynamique dans Programmation Python . En Python, nous n'avons pas besoin de spécifier le type de données de la variable et nous pouvons réaffecter les différentes valeurs de type de données à la même variable dans un code ultérieur. Voyons l'exemple suivant.

Exemple -

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

Sortir:

qu'est-ce que desktop.ini
 

Comme nous pouvons le voir dans le code ci-dessus, nous avons attribué un entier à une variable x, ce qui en fait le int taper. Ensuite, nous avons attribué une chaîne et une liste à la même variable. L'interpréteur Python accepte les changements de types de données de la même variable. Il s'agit d'un comportement de frappe dynamique.

De nombreux autres langages de programmation tels que Java et Swift sont de type statique. Nous devons déclarer une variable avec les types de données. Dans l'exemple ci-dessous, nous essayons de faire la même chose en utilisant Swift au lieu de Python.

Exemple -

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

Le code ci-dessus ne peut pas être compilé, car nous n'avons pas pu attribuer de chaîne en langage Swift. Parce que variable un a été déclaré comme un entier.

'formule de maçon'

Concept de frappe de canard

Plus tôt, nous avons expliqué que Python est un langage typé dynamique. Cependant, nous pouvons utiliser l'approche dynamique avec des types de données personnalisés. Comprenons l'exemple suivant.

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) 

Sortir:

 Compiling Running Spell Check Convention Check 

Dans le code ci-dessus, nous avons créé un Visual Studio classe qui doit exécuter() méthode. Dans la classe desktop, nous avons passé l'ide comme argument dans le code(). Un ça va est un objet de Visual Studio classe. Avec l'aide d'ide, nous avons appelé le exécuter() méthode de la classe VisualStudio.

Voyons un autre exemple.

quel est 10 sur 60

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

Sortir:

 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' 

Dans le code ci-dessus, l'instance de la classe Duck est reflétée en appelant le duck_testing fonction. Cela arrive également avec la classe Sparrow, qui implémente la nager() fonction. Mais dans le cas de la classe Crocodile, elle échoue à l'évaluation du test de canard car elle n'implémente pas le nager() fonction.

Comment la saisie de canard prend en charge l'EAFP

Le typage canard est le style le plus approprié pour l'EAFP car nous n'avons pas besoin de nous concentrer sur le 'taper' de l'objet. Il suffit de s'occuper de lui comportement et aptitude . Voyons les déclarations suivantes.

Lorsque nous voyons beaucoup de blocs if-else, alors il s'agit d'un style de codage LBYL.

Mais si nous voyons beaucoup de blocs try-sauf, alors il s'agit probablement d'un codeur EAFP.