logo

Mitä on ankan kirjoittaminen Pythonissa?

Tässä opetusohjelmassa opimme ankan kirjoittamisesta. Se on suosittu termi Pythonissa, ja se tulee sanoista, 'Jos se kävelee kuin ankka, ui kuin ankka, näyttää ankalta, sen pitäisi luultavasti olla ankka.'

Yllä oleva lause antaa idean ankan tunnistamiseen. Tässä meillä ei tarvitse olla ankan genomista sekvenssiä. Teemme johtopäätöksemme sen käyttäytymisestä ja ulkonäöstä.

Keskustelemme siitä, mitä ankka kirjoittaminen tarkoittaa Python-ohjelmoinnissa.

Python seuraa EAFP (Helpompi pyytää anteeksi kuin lupa) kuin LBLY (Katso ennen kuin hyppäät) filosofiaa. EAFP liittyy jossain määrin 'ankan kirjoitustyyliin'.

Dynaaminen vs. staattinen kirjoittaminen

Tärkein syy ankkakirjoituksen käyttämiseen on tukea dynaamista kirjoittamista Python ohjelmointi . Pythonissa meidän ei tarvitse määrittää muuttujan tietotyyppiä ja voimme määrittää eri tietotyyppiarvot samalle muuttujalle toisessa koodissa. Katsotaanpa seuraava esimerkki.

Esimerkki -

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

Lähtö:

kuinka saada game pigeon Androidille
 

Kuten yllä olevasta koodista näemme, määritimme muuttujalle x kokonaisluvun, jolloin se int tyyppi. Sitten määritimme merkkijonon ja luettelon samalle muuttujalle. Python-tulkki hyväksyy saman muuttujan tietotyyppien muutokset. Tämä on dynaaminen kirjoituskäyttäytyminen.

Monet muut ohjelmointikielet, kuten Java, swift ovat staattisia tyyppejä. Meidän on ilmoitettava muuttuja tietotyyppien kanssa. Alla olevassa esimerkissä yritämme tehdä saman käyttämällä Swiftiä Pythonin sijaan.

Esimerkki -

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

Yllä olevaa koodia ei voida kääntää, koska emme voineet määrittää merkkijonoa Swift-kielellä. Koska muuttuva a ilmoitettiin kokonaislukuna.

binääripuutyypit

Ankan kirjoittamisen käsite

Olemme aiemmin keskustelleet siitä, että Python on dynaaminen kirjoitettu kieli. Voimme kuitenkin käyttää dynaamista lähestymistapaa mukautettujen tietotyyppien kanssa. Ymmärretään seuraava esimerkki.

Esimerkki -

 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) 

Lähtö:

 Compiling Running Spell Check Convention Check 

Yllä olevassa koodissa olemme luoneet a VisualStudio luokka, jonka täytyy suorittaa() menetelmä. Desktop-luokassa olemme ohittaneet idean argumenttina koodissa (). An se menee on esine VisualStudio luokkaa. Ide:n avulla soitimme suorittaa() VisualStudio-luokan menetelmä.

Katsotaanpa toinen esimerkki.

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

Lähtö:

 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' 

Yllä olevassa koodissa Duck-luokan ilmentymä heijastuu kutsumalla ankka_testaus toiminto. Se tapahtuu myös Sparrow-luokassa, joka toteuttaa uida() toiminto. Mutta Crocodile-luokan tapauksessa se epäonnistuu ankkatestauksen arvioinnissa, koska se ei toteuta uida() toiminto.

Kuinka ankan kirjoittaminen tukee EAFP:tä

Ankkakirjoitus on sopivin tyyli EAFP:lle, koska meidän ei tarvitse keskittyä siihen 'tyyppi' esineestä. Meidän on vain huolehdittava siitä käyttäytymistä ja kyky . Katsotaanpa seuraavat lausunnot.

Kun näemme paljon if-else-lohkoja, se on LBYL-koodaustyyli.

merkki.vertaa javaa

Mutta jos näemme paljon try-paitsi lohkoja, niin se on todennäköisyys EAFP-kooderi.