logo

Hva er andeskriving i Python?

I denne opplæringen lærer vi om andeskriving. Det er et populært begrep i Python, og det kommer fra å si: 'Hvis den går som en and, svømmer som en and, ser ut som en and, så burde det nok vært en and.'

Utsagnet ovenfor gir en idé om å identifisere en and. Her trenger vi ikke ha en genomisk sekvens av anda. Vi trekker vår konklusjon av dens oppførsel og ytre utseende.

Vi vil diskutere hva som egentlig betyr med andeskriving i Python-programmering.

Python følger EAFP (Enklere å be om tilgivelse enn tillatelse) i stedet for LBLY (Look Before You Leap) filosofi. EAFP er noe knyttet til 'and-skriving'-stilen.

Dynamisk vs. statisk skriving

Hovedgrunnen til å bruke andeskriving er å gi støtte for dynamisk inntasting Python programmering . I Python trenger vi ikke å spesifisere variabelens datatype, og vi kan tilordne de forskjellige datatypeverdiene til samme variabel i videre kode. La oss se følgende eksempel.

Eksempel -

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

Produksjon:

hvor finner jeg nettleserinnstillingene mine
 

Som vi kan se i koden ovenfor, tilordnet vi et heltall til en variabel x, noe som gjør det til int type. Deretter tildelte vi en streng og en liste til den samme variabelen. Python-tolken aksepterer endringene av datatyper for samme variabel. Dette er en dynamisk skriveadferd.

Mange andre programmeringsspråk som Java, swift er den statiske typen. Vi må deklarere variabel med datatypene. I eksemplet nedenfor prøver vi å gjøre det samme ved å bruke Swift i stedet for Python.

Eksempel -

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

Koden ovenfor kan ikke kompileres, fordi vi ikke kunne tilordne en streng på Swift-språket. Fordi variabel en ble deklarert som et heltall.

programmering i c-matriser

Konsept av Duck Typing

Tidligere har vi diskutert at Python er et dynamisk maskinskrevet språk. Vi kan imidlertid bruke den dynamiske tilnærmingen med tilpassede datatyper. La oss forstå følgende eksempel.

Eksempel -

 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) 

Produksjon:

 Compiling Running Spell Check Convention Check 

I koden ovenfor har vi laget en Visuelt studio klasse som må henrette() metode. I desktop-klassen har vi sendt iden som et argument i koden(). An Det går er et objekt av Visuelt studio klasse. Ved hjelp av ide ringte vi til henrette() metode for VisualStudio-klassen.

La oss se et annet eksempel.

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

Produksjon:

 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' 

I koden ovenfor reflekteres Duck-klassens forekomst ved å kalle anda_testingen funksjon. Det skjer også med Sparrow-klassen, som implementerer svømme() funksjon. Men når det gjelder Crocodile-klassen, mislykkes den i andtesting-evalueringen fordi den ikke implementerer svømme() funksjon.

python sorteringsordbok

Hvordan duck-skriving støtter EAFP

Andeskrivingen er den mest passende stilen for EAFP fordi vi ikke trenger å fokusere på 'type' av objektet. Vi trenger bare å ta vare på den oppførsel og evne . La oss se følgende utsagn.

Når vi ser mange if-else-blokker, er det en LBYL-kodestil.

Men hvis vi ser mange prøve-unntatt blokker, så er det en sannsynlighet for en EAFP-koder.