Python ir populāra prog­ram­mē­ša­nas valoda. Tāpēc, ja pie­tea­ties uz prog­ram­mē­tā­ja amatu, jārēķinās, ka jums tiks uzdoti de­ta­li­zē­ti jautājumi par to, kā tā darbojas. Šeit mēs ap­ska­tī­sim 10 Python in­ter­vi­jas jau­tā­ju­mus, kas jums var tikt uzdoti, un to, kā uz tiem atbildēt.

Python in­ter­vi­jas jautājums Nr. 1: Kas ir īpašs Python valodā un kādas ir tās priekš­ro­cī­bas?

Python ir daudz­pu­sī­ga prog­ram­mē­ša­nas valoda, ko var izmantot tīmekļa izstrādes, datu analīzes un mākslīgā intelekta jomās. Tā piedāvā neticamu lie­to­tā­jam drau­dzī­gu­mu, daudz­pu­sī­bu un labu veikt­spē­ju — tie ir tikai trīs iemesli, kāpēc daudzi topošie prog­ram­mē­tā­ji izvēlas to kā prog­ram­mē­ša­nas valodu, ko apgūt.

Tā ir ļoti ie­sā­cē­jiem draudzīga valoda ar viegli saprotamu sintaksi un vi­s­ap­tve­ro­šu standarta bib­lio­tē­ku, kas ietver daudzus gatavus moduļus un funkcijas.

Citas priekš­ro­cī­bas ietver lielu, aktīvu Python iz­strā­dā­tā­ju kopienu, kas sniedz ārējos resursus un atbalstu izstrādes procesā. Kā in­ter­pre­tē­jo­ša un ob­jek­to­rien­tē­ta valoda, tā ir arī piemērota ātrai koda rak­stī­ša­nai un tūlītējai tes­tē­ša­nai. Dinamiskā ti­pi­zā­ci­ja vēl vairāk uzlabo valodas elas­tī­gu­mu.

Tāpat kā Java, Python ir ne­at­ka­rīgs no plat­for­mas. To var viegli integrēt ar citām valodām, piemēram, C++, at­vieg­lo­jot darbu starp plat­for­mām un po­ten­ciā­lu veikt­spē­jas op­ti­mi­zā­ci­ju.

Python in­ter­vi­jas jautājums Nr. 2: Ko Python prog­ram­mē­ša­nas valodā nozīmē termins „darbības joma”?

„Darbības joma” attiecas uz jomu, kurā mainīgais ir derīgs. Tā ir koda daļa, kurā mainīgais ir redzams un pieejams, un kurā mainīgos var definēt un izmantot. Tas padara kodu skaidrāku un samazina nosaukumu kon­flik­tus. Python ir divi galvenie darbības jomas veidi:

  • Globālais darbības joma: Šis mainīgais ir definēts ārpus funkcijām un klasēm. Tas ir pieejams visā programmā un bieži atrodams koda sākumā vai augstākā līmenī.
  • Vietējā darbības joma: mainīgie vietējā darbības jomā ir ie­ro­be­žo­ti ar funkciju, kurā tie ir definēti. Tos var arī piešķirt īpaši definētam blokam.

Ja vēlaties piekļūt mai­nī­ga­jam ārpus definētā koda, jums būs jā­pap­la­ši­na darbības joma ar īpašu izteikumu, piemēram, “global” vai “nonlocal”.

Python in­ter­vi­jas jautājums Nr. 3: Kāda ir atšķirība starp sa­rak­stiem un tupliem Python?

Python valodā ir divi datu tipi, kas paredzēti sakārtotu elementu kopu uz­gla­bā­ša­nai: saraksti un tuples. Saraksti parasti tiek izmantoti biežāk, jo tie ir elas­tī­gā­ki. Šeit ir dažas būtiskas at­šķi­rī­bas starp abiem:

  • Mainīgums: Sarakstus var mainīt pat pēc to iz­vei­do­ša­nas. Jūs varat pievienot, dzēst vai mainīt elementus tajos. No otras puses, jūs nevarat mainīt elementus kopā pēc tās iz­vei­do­ša­nas.
  • Sintakse: Saraksti tiek izveidoti, iz­man­to­jot kvad­rā­tie­ka­vas [], savukārt tuples izmanto apaļās iekavas (). Atšķirībā no sa­rak­stiem, tuples var definēt arī, iz­man­to­jot komatus, nevis iekavas.
  • Ātrums: Kura datu tipa ātrums ir lielāks, ir atkarīgs no konteksta. Sarakstu mainīgums padara tos ātrākus dažās darbībās, piemēram, plašās datu izmaiņās. Tuples ir ātrākas, ja ir ne­pie­cie­šams piekļūt ele­men­tiem kolekcijā.

Python in­ter­vi­jas jautājums Nr. 4: Kāda ir atšķirība starp moduļiem un pakotnēm?

Moduļi un paketes atšķiras savā pie­lie­to­ju­mā. Moduļi ir atsevišķi faili ar kodu, savukārt paketes ir moduļu kopas vienā di­rek­to­ri­jā. Abas ir pa­re­dzē­tas, lai palīdzētu izveidot skaidru struktūru, kas var būt noderīga lielākos Python projektos. Dažas citas at­šķi­rī­bas starp moduļiem un paketēm ir:

  • Modulis: Python valodā moduļi ir atsevišķi faili, kas var saturēt funkcijas, klases un mainīgos. Failiem ir pa­pla­ši­nā­jums .py, un tie palīdz labāk organizēt kodu. Atsevišķi faili palīdz uzlabot lasāmību un uz­tu­rē­ša­nu.
  • Pakete: Paketes arī izmanto or­ga­ni­zē­ša­nai, bet tās ir struk­tu­rē­tas di­rek­to­ri­jās un mapēs. Tas ļauj kodā esošos moduļus organizēt hie­rar­his­ki. Lai di­rek­to­ri­ju varētu uzskatīt par paketi, tajā jābūt failam __init__.py.

Python in­ter­vi­jas jautājums Nr. 5: Kas ir pickling un un­pickling?

„Pickling” un „un­pickling” attiecas uz iekšējo objektu se­ria­li­zē­ša­nu un de­se­ria­li­zē­ša­nu. Šie procesi ļauj pārvērst objektus bināros datu at­tē­lo­ju­mos (pickling) vai atgūt objektus no bi­nā­ra­jiem at­tē­lo­ju­miem (un­pickling).

  • Pickling: Pickling pārvērš objektu binārā formātā. Tas ir svarīgi, ja vēlaties saglabāt datus pastāvīgi vai pārnest datus uz tīklu. Pickle modulis tiek izmantots pickling Python. Tas serializē objektu, pārvēršot to baitu plūsmā.
  • Un­pickling: Pretēji pickling procesam, un­pickling atjauno iepriekš pickled objektu no tā binārā at­tē­lo­ju­ma. Pickle modulis tiek izmantots arī un­pickling un de­se­ria­li­zē baitu plūsmu atpakaļ Python objektā.

Python in­ter­vi­jas jautājums Nr. 6: Kāda ir atšķirība starp funkciju un lambda funkciju?

Kopumā abu funkciju veidi kalpo vienam un tam pašam mērķim. Lambda funkcijas ir īsākas un tiek iz­man­to­tas biežāk vien­kār­šā­kām darbībām un fil­trē­ša­nas uz­de­vu­miem. Galvenās at­šķi­rī­bas starp parasto funkciju un lambda variāciju ir saistītas ar sintaksi, darbības jomu un lie­to­ša­nas jomām.

  • Sintakse: Lambda funkcijām ir kompakts sintakse, kas attiecas uz de­fi­nī­ci­ju, ķermeni un at­grie­ša­nas vērtību. Piemēram, at­grie­ša­nas vērtībai nav eks­pli­cī­ta “at­grie­ša­nas” funkcija, jo iz­teik­smes vērtība tiek atgriezta implicīti. Tas padara lambda iz­teik­smes īpaši pie­mē­ro­tas īsiem, kon­krē­tiem funkciju ap­rak­stiem.
  • Darbības joma: kamēr parastās funkcijas var ietvert vairākus iz­tei­ku­mus un sarežģītu loģiku, lambda funkcijas ir ie­ro­be­žo­tas ar vienu izteikumu. Lambda varianti var izmantot tikai lokālas mainīgās, kurām parasti ir ie­ro­be­žo­ta darbības joma. Savukārt parastās funkcijas var izmantot gan lokālas, gan globālas mainīgās.
  • Lie­to­ša­nas jomas: Parastās funkcijas var definēt jebkurā kodā. Lambda mainīgie bieži tiek izmantoti gadījumos, kad ir ne­pie­cie­ša­ma īslaicīga funkcija, piemēram, sorted, filter vai map.

Python in­ter­vi­jas jautājums Nr. 7: Kādi mantojuma veidi ir Python un kā Python apstrādā daudz­kār­tē­ju mantojumu?

Python valodā ir vairāki mantojuma veidi. Ir iespējama gan vienkārša mantojuma, gan daudz­kār­tē­ja mantojuma. Vienkāršā mantojumā viena klase manto no vienas vecākas klases, un at­va­si­nā­tā klase pārņem visas vecākas klases atribūtus un metodes.

Daudz­kār­tē­jā mantojumā klase manto no vairāk nekā vienas vecākas klases. At­va­si­nā­tā klase var pārņemt visu vecāko klašu atribūtus un metodes.

Python valodā daudz­kār­tē­jai pār­man­to­ša­nai tiek izmantots C3 li­nea­ri­zā­ci­jas algoritms jeb metožu iz­šķir­ša­nas secība. Algoritms nosaka secību, kādā metodes tiek izšķirtas daudz­kār­tē­jās pār­man­to­ša­nas hie­rar­hi­jā. Tas nodrošina, ka atribūti un metodes tiek meklētas kon­sek­ven­tā un paredzamā secībā. Python izmanto li­nea­ri­zā­ci­ju, lai novērstu zināmas pār­man­to­ša­nas problēmas, piemēram, dimanta problēmu.

Python in­ter­vi­jas jautājums Nr. 8: Kas ir monkey patching?

„Monkey patching” ir process, kurā esošais kods tiek mo­di­fi­cēts darbības laikā. To var izdarīt, piemēram, pie­vie­no­jot vai aizstājot funkcijas vai metodes. Monkey patching ļauj dinamiski mainīt kodu, ne­mo­di­fi­cē­jot sā­kot­nē­jās klases vai funkcijas avota kodu. Tas var būt noderīgi, lai labotu kļūdas, pa­pla­ši­nā­tu fun­kcio­na­li­tā­ti un pielāgotu bib­lio­tē­ku vai satvara daļas. Attiecībā uz klasēm metodes var arī pār­rak­stīt un pievienot jaunas metodes.

Python in­ter­vi­jas jautājums Nr. 9: Kādas ir at­šķi­rī­bas starp Django, Pyramid un Flask?

Django, Pyramid un Flask ir Python tīmekļa satvara, kas atšķiras ar savu pieeju, sa­rež­ģī­tī­bu un pie­eja­ma­jām funkcijām. Šeit ir dažas no gal­ve­na­jām at­šķi­rī­bām starp tām.

Django

Django ir augsta līmeņa tīmekļa satvara, kas piedāvā dažādas papildu funkcijas. Daudzas funkcijas un moduļi ir iepriekš instalēti. Piemēram, Django ir savs objektu-relaciju kartējums datu bāzes mi­jie­dar­bī­bai. Tas nodrošina arī integrētu ad­mi­nis­tra­to­ra saskarni, kas vienkāršo datu modeļu pār­val­dī­bu.

Lie­to­jum­prog­ram­mas URL dizains un struktūra ir iepriekš definēti, kas atvieglo izstrādi. Django parasti pievērš lielu uzmanību kon­ven­ci­jām. Tas piedāvā arī iebūvētu au­ten­ti­fi­kā­ci­ju un au­to­ri­zā­ci­ju, kā arī satur tādas funkcijas kā formulas un CSRF aiz­sar­dzī­ba. Šis satvars ir vis­pie­mē­ro­tā­kais pie­re­dzē­ju­šiem lie­to­tā­jiem, jo plašais funkciju klāsts un stingrā struktūra rada strauju mācību līkni.

Piramīda

Atšķirībā no Django vis­pu­sī­gu­ma, Pyramid ir viegls un elastīgs. Tas ļauj at­tīs­tī­tā­jiem iz­vē­lē­ties vēlamās bib­lio­tē­kas un kom­po­nen­tus, un ir iz­strā­dāts tā, lai būtu skalējams un pa­pla­ši­nāms. Framework atbalsta dažāda veida lie­to­jum­prog­ram­mas, sākot no maziem pro­jek­tiem līdz lielām, sa­rež­ģī­tām lie­to­jum­prog­ram­mām.

Atšķirībā no Django, Pyramid nav noteiktas lie­to­jum­prog­ram­mas struk­tū­ras, kas nodrošina lielāku brīvību koda or­ga­ni­zē­ša­nā. Arī veidņu dzinēja izvēle ir brīva, jo Pyramid neizmanto no­klu­sē­ju­ma dzinēju.

Tā elastīgā lietošana un minimālie ie­sta­tī­ju­mi padara tā apguvi ie­vē­ro­ja­mi vien­kār­šā­ku, tādējādi Pyramid ir pie­mē­ro­tāks ie­sā­cē­jiem.

Kolba

Flask ir tā saucamais mik­rof­ra­mework. Tas sākotnēji tika iz­strā­dāts kā viegls un vienkārši lietojams. Lai to at­vieg­lo­tu, framework piedāvā tikai ne­pie­cie­ša­mā­ko. Ja ne­pie­cie­šams, ar Flask var pievienot bib­lio­tē­kas.

Flask izmanto vienkāršu un skaidru API, kas ļauj ātri sākt izstrādi. Framework ir balstīts uz WSGI rīku komplektu „Werkzeug” un izmanto Jinja2 veidņu dzinēju. Iz­strā­dā­tā­ji var arī integrēt citas ne­pie­cie­ša­mās sa­stāv­da­ļas.

Galu galā, jūsu izvēle būs atkarīga no jūsu projekta va­ja­dzī­bām un ne­pie­cie­ša­mās elastības. Django piedāvā daudzas in­teg­rē­tas funkcijas un skaidru struktūru. Pyramid prio­ri­ti­zē elastību un mē­ro­go­ja­mī­bu. Savukārt Flask kon­cen­trē­jas uz vien­kār­šī­bu un mi­ni­mā­lis­mu.

Python in­ter­vi­jas jautājums Nr. 10: Ko Python valodā nozīmē ‘args’ un ‘kwargs’?

Abi termini apzīmē po­zi­cio­nā­los ar­gu­men­tus (args) un at­slēg­vār­du ar­gu­men­tus (kwargs). Abi ir kon­ven­ci­jas, kas bieži tiek iz­man­to­tas, definējot funkcijas ar mainīgu argumentu skaitu, no­dro­ši­not at­tīs­tī­tā­jiem papildu elas­tī­gu­mu. Tas ir īpaši noderīgi, ja sākumā nav skaidrs, cik daudz vai kāda veida argumenti tiks sniegti beigās.

Args tiek izmantoti, ja funkcijā tiek pieņemts mainīgs argumentu skaits atkarībā no pozīcijas. Tas ļauj ievadīt ne­ie­p­riekš definētu argumentu skaitu, kas savukārt ir pieejami kā tuples funkcijā.

Kwargs ir līdzīgi. Tie tiek izmantoti, lai pieņemtu mainīgu argumentu skaitu, pa­ma­to­jo­ties uz at­slēg­vār­diem. Tas ļauj ievadīt ne­ie­p­riekš definētu argumentu skaitu, kas funkcijā ir pieejami kā vārdnīca.

Ja funkcijā ir jāiekļauj gan mainīgie po­zi­cio­nā­lie, gan at­slēg­vār­du argumenti, Python valodā vienā funkcijā var izmantot args un kwargs.

Go to Main Menu