logo

Cos'è la digitazione della papera in Python?

In questo tutorial impareremo la digitazione della papera. È un termine popolare in Python e deriva dal dire: 'Se cammina come un'anatra, nuota come un'anatra, sembra un'anatra, allora probabilmente dovrebbe essere un'anatra.'

L'affermazione sopra dà un'idea per identificare un'anatra. Qui non abbiamo bisogno di avere una sequenza genomica dell'anatra. Traiamo la nostra conclusione dal suo comportamento e dalle apparenze esterne.

Discuteremo cosa significa esattamente la digitazione duck nella programmazione Python.

Python segue il EAFP (È più facile chiedere perdono che permesso) piuttosto che il LBLY (Guarda prima di saltare). L'EAFP è in qualche modo legato allo stile della 'scrittura a papera'.

Digitazione dinamica e statica

Il motivo principale per utilizzare la digitazione duck è fornire supporto per la digitazione dinamica Programmazione Python . In Python, non abbiamo bisogno di specificare il tipo di dati della variabile e possiamo riassegnare i diversi valori del tipo di dati alla stessa variabile in ulteriore codice. Vediamo il seguente esempio.

Esempio -

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

Produzione:

fizzbuzz java
 

Come possiamo vedere nel codice sopra, abbiamo assegnato un numero intero a una variabile x, rendendola del int tipo. Quindi abbiamo assegnato una stringa e una lista alla stessa variabile. L'interprete Python accetta le modifiche dei tipi di dati della stessa variabile. Questo è un comportamento di digitazione dinamica.

Molti altri linguaggi di programmazione come Java e Swift sono di tipo statico. Dobbiamo dichiarare la variabile con i tipi di dati. Nell'esempio seguente, proviamo a fare la stessa cosa usando Swift invece di Python.

Esempio -

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

Il codice sopra non può essere compilato perché non è stato possibile assegnare una stringa nel linguaggio Swift. Perché variabile UN è stato dichiarato come un numero intero.

come selezionare colonne da diverse tabelle in SQL

Concetto di battitura a papera

In precedenza, abbiamo discusso del fatto che Python è un linguaggio tipizzato dinamico. Tuttavia, possiamo utilizzare l'approccio dinamico con tipi di dati personalizzati. Comprendiamo il seguente esempio.

Esempio -

 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) 

Produzione:

 Compiling Running Spell Check Convention Check 

Nel codice precedente, abbiamo creato un file VisualStudio classe che deve eseguire() metodo. Nella classe desktop, abbiamo passato l'ide come argomento nel code(). UN va è un oggetto di VisualStudio classe. Con l'aiuto di ide, abbiamo chiamato il file eseguire() metodo della classe VisualStudio.

chiave univoca mysql

Vediamo un altro esempio.

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

Produzione:

 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' 

Nel codice precedente, l'istanza della classe Duck si riflette chiamando il duck_testing funzione. Succede anche con la classe Sparrow, che implementa il file nuotare() funzione. Ma nel caso della classe Crocodile, fallisce la valutazione del duck testing perché non implementa il file nuotare() funzione.

Come la digitazione della papera supporta l'EAFP

La digitazione a papera è lo stile più appropriato per l'EAFP perché non abbiamo bisogno di concentrarci sul 'tipo' dell'oggetto. Dobbiamo solo prenderci cura di esso comportamento E capacità . Vediamo le seguenti affermazioni.

Quando vediamo molti blocchi if-else, allora si tratta di uno stile di codifica LBYL.

Ma se vediamo molti blocchi try-eccetto, allora è probabile che si tratti di un programmatore EAFP.