logo

Шта је патка куцање у Питхон-у?

У овом водичу ћемо научити о куцању патке. То је популаран термин у Питхон-у и долази из речи: 'Ако хода као патка, плива као патка, изгледа као патка, онда би вероватно требало да буде патка.'

Горња изјава даје идеју за идентификацију патке. Овде не треба да имамо геномску секвенцу патке. Закључак изводимо по његовом понашању и спољашњем изгледу.

Разговараћемо о томе шта је тачно значи куцање у Питхон програмирању.

Питхон прати ЕАФП (Лакше је тражити опроштај него дозволу) него ЛБЛИ (Погледај пре него што скочиш) филозофија. ЕАФП је донекле повезан са стилом 'патка куцања'.

Динамичко наспрам статичког куцања

Главни разлог за коришћење дуцк куцања је пружање подршке за динамичко куцање Питхон програмирање . У Питхон-у, не морамо да специфицирамо тип података променљиве и можемо поново доделити различите вредности типа података истој променљивој у даљем коду. Погледајмо следећи пример.

Пример -

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

Излаз:

колико градова САД
 

Као што можемо видети у горњем коду, променљивој к смо доделили цео број, чинећи га од инт тип. Затим смо истој променљивој доделили стринг и листу. Питхон интерпретер прихвата промене типова података исте променљиве. Ово је понашање динамичког куцања.

Многи други програмски језици као што је Јава, свифт су статички тип. Морамо да декларишемо променљиву са типовима података. У следећем примеру покушавамо да урадимо исту ствар користећи Свифт уместо Питхон-а.

Пример -

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

Горњи код се не може компајлирати, јер нисмо могли да доделимо стринг у Свифт језику. Јер променљива а је декларисан као цео број.

поредајте насумично у скл

Концепт куцања патке

Раније смо расправљали о томе да је Питхон динамички куцани језик. Међутим, можемо користити динамички приступ са прилагођеним типовима података. Хајде да разумемо следећи пример.

Пример -

 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) 

Излаз:

 Compiling Running Spell Check Convention Check 

У горњем коду смо креирали а Визуелни студио разред који мора изврши() методом. У десктоп-класи, проследили смо иде као аргумент у коду(). Ан то иде је објекат од Визуелни студио класа. Уз помоћ иде, позвали смо изврши() метод класе ВисуалСтудио.

Хајде да видимо још један пример.

Пример - 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()) 

Излаз:

 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' 

У горњем коду, инстанца класе Дуцк се одражава позивањем тхе дуцк_тестинг функција. То се такође дешава са класом Спарров, која имплементира пливати () функција. Али у случају класе Крокодил, не прође евалуацију тестирања патке јер не имплементира пливати () функција.

опружни модули

Како патка куцање подржава ЕАФП

Пачје куцање је најприкладнији стил за ЕАФП јер не морамо да се фокусирамо на 'тип' објекта. Само треба да се бринемо о томе понашање и способност . Погледајмо следеће изјаве.

Када видимо много иф-елсе блокова, онда је то ЛБИЛ стил кодирања.

Али ако видимо много покушаја осим блокова, онда је то вероватно ЕАФП кодер.