logo

Kaj je račje tipkanje v Pythonu?

V tej vadnici se bomo naučili račjega tipkanja. To je priljubljen izraz v Pythonu in izvira iz besed, 'Če hodi kot raca, plava kot raca, je videti kot raca, potem bi verjetno morala biti raca.'

Zgornja izjava daje idejo za prepoznavanje race. Tu nam ni treba imeti genomskega zaporedja race. Na podlagi obnašanja in zunanjega videza sklepamo.

Razpravljali bomo o tem, kaj točno pomeni račje tipkanje v programiranju Python.

Python sledi EAFP (Lažje prositi za odpuščanje kot za dovoljenje) namesto za LBLY (Look Before You Leap) filozofija. EAFP je nekoliko povezan s slogom 'račjega tipkanja'.

Dinamično proti statičnemu tipkanju

Glavni razlog za uporabo račjega tipkanja je zagotoviti podporo za dinamično tipkanje Python programiranje . V Pythonu nam ni treba določiti podatkovnega tipa spremenljivke in lahko v nadaljnji kodi dodelimo različne vrednosti podatkovnega tipa isti spremenljivki. Poglejmo naslednji primer.

Primer -

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

Izhod:

kako pretvoriti char v niz
 

Kot lahko vidimo v zgornji kodi, smo spremenljivki x dodelili celo število, tako da je int vrsta. Nato smo isti spremenljivki dodelili niz in seznam. Tolmač Python sprejema spremembe tipov podatkov iste spremenljivke. To je dinamično tipkanje.

Mnogi drugi programski jeziki, kot sta Java, swift, so statičnega tipa. Spremenljivko moramo deklarirati s podatkovnimi tipi. V spodnjem primeru poskušamo narediti isto stvar z uporabo Swifta namesto Pythona.

Primer -

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

Zgornje kode ni mogoče prevesti, ker nismo mogli dodeliti niza v jeziku Swift. Ker spremenljivo a je bilo deklarirano kot celo število.

datoteke linux

Koncept račjega tipkanja

Prej smo razpravljali o tem, da je Python dinamično tipkan jezik. Vendar pa lahko uporabimo dinamični pristop s tipi podatkov po meri. Razumejmo naslednji primer.

Primer -

 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) 

Izhod:

 Compiling Running Spell Check Convention Check 

V zgornji kodi smo ustvarili a VisualStudio razred, ki mora izvrši() metoda. V namiznem razredu smo idejo posredovali kot argument v kodi(). An gre je predmet VisualStudio razred. S pomočjo ide smo poklicali izvrši() metoda razreda VisualStudio.

Poglejmo še en primer.

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

Izhod:

 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' 

V zgornji kodi se primerek razreda Duck odraža s klicem duck_testing funkcijo. To se zgodi tudi z razredom Sparrow, ki implementira plavati () funkcijo. Toda v primeru razreda Crocodile ne uspe oceniti testiranja z raco, ker ne izvaja plavati () funkcijo.

Kako račje tipkanje podpira EAFP

Račje tipkanje je najprimernejši slog za EAFP, ker se nam ni treba osredotočati na 'tip' predmeta. Le poskrbeti moramo zanj obnašanje in zmogljivost . Poglejmo naslednje izjave.

bližnjice na tipkovnici linux

Ko vidimo veliko blokov if-else, je to slog kodiranja LBYL.

Če pa vidimo veliko blokov poskusi razen, potem je to verjetno kodirnik EAFP.