1

Vprašanje za razgovor o Pythonu 1: Kaj je posebnega pri Pythonu in kakšne prednosti ima ta jezik?

Python je vse­stran­ski pro­gram­ski jezik, ki se lahko uporablja na področjih razvoja spletnih strani, analize podatkov in umetne in­te­li­gen­ce. Ponuja ne­ver­je­tno upo­rab­ni­ško pri­ja­znost, vse­stran­skost in dobro zmo­glji­vost – to so le trije razlogi, zakaj ga mnogi am­bi­ci­o­zni pro­gra­mer­ji izberejo kot pro­gram­ski jezik, ki se ga želijo naučiti.

Je zelo za­če­tni­kom prijazen jezik z enostavno ra­zu­mlji­vo sintakso in obsežno stan­dar­dno knjižnico, ki vključuje številne pri­pra­vlje­ne module in funkcije.

Druge prednosti vklju­ču­je­jo veliko, aktivno skupnost raz­vi­jal­cev Python, ki pri­spe­va­jo zunanje vire in podporo ra­zvoj­ne­mu procesu. Kot in­ter­pre­ta­tiv­ni in objektno usmerjeni jezik je primeren tudi za hitro pisanje kode in takojšnje te­sti­ra­nje. Dinamično ti­pi­zi­ra­nje dodatno povečuje fle­ksi­bil­nost jezika.

Tako kot Java je tudi Python neodvisen od platforme. Lahko se brez težav integrira z drugimi jeziki, kot je C++, kar olajšuje delo na več plat­for­mah in po­ten­ci­al­no op­ti­mi­za­ci­jo zmo­glji­vo­sti.

Vprašanje za razgovor o Pythonu 2: Kaj pomeni »obseg« v Pythonu?

»Obseg« se nanaša na območje, kjer je spre­men­ljiv­ka veljavna. To je del kode, kjer je spre­men­ljiv­ka vidna in dostopna ter kjer se spre­men­ljiv­ke lahko opre­de­li­jo in uporabijo. To naredi kodo jasnejšo in zmanjša konflikte pri po­i­me­no­va­nju. Python ima dve glavni vrsti obsega:

  • Globalni obseg: Ta vrsta spre­men­ljiv­ke je de­fi­ni­ra­na zunaj funkcij in razredov. Dostopna je v celotnem programu in se pogosto nahaja na začetku kode ali na višji ravni.
  • Lokalni obseg: Spre­men­ljiv­ke v lokalnem obsegu so omejene na funkcijo, v kateri so de­fi­ni­ra­ne. Lahko so tudi dodeljene posebej de­fi­ni­ra­ne­mu bloku.

Če želite dostopati do spre­men­ljiv­ke zunaj opre­de­lje­ne­ga kode, morate razširiti obseg s posebno izjavo, kot je »global« ali »nonlocal«.

Vprašanje za razgovor o Pythonu 3: Kakšna je razlika med seznami in nizi v Pythonu?

V Pythonu obstajata dva po­dat­kov­na tipa za shra­nje­va­nje urejenih zbirk elementov: seznami in nizi. Seznami se zaradi svoje pri­la­go­dlji­vo­sti običajno upo­ra­blja­jo pogosteje. Tukaj je nekaj ključnih razlik med njima:

  • Spre­men­lji­vost: Sezname je mogoče spre­mi­nja­ti tudi po njihovi ustva­ri­tvi. V njih lahko dodajate, od­stra­nju­je­te ali spre­mi­nja­te elemente. Po drugi strani pa elementov v nizu ni mogoče spre­mi­nja­ti po njegovi ustva­ri­tvi.
  • Sintaksa: Seznami se ustvarijo z uporabo oglatih oklepajev [], medtem ko se za nize upo­ra­blja­jo okrogli oklepaji (). Za razliko od seznamov se nizi lahko opre­de­li­jo tudi z vejicami namesto oklepaji.
  • Hitrost: Kateri po­dat­kov­ni tip je hitrejši, je odvisno od konteksta. Spre­men­lji­vost seznamov jih naredi hitrejše pri nekaterih ope­ra­ci­jah, kot so obsežne spremembe podatkov. Tuple so hitrejše, ko gre za dostop do elementov znotraj zbirke.

Vprašanje za razgovor o Pythonu 4: Kakšna je razlika med moduli in paketi?

Moduli in paketi se raz­li­ku­je­jo po svoji uporabi. Moduli so posamezne datoteke s kodo, paketi pa so zbirke modulov znotraj imenika. Oba sta namenjena ustvar­ja­nju jasne strukture, kar je lahko koristno pri večjih projektih v Pythonu. Nekatere druge razlike med moduli in paketi so:

  • Modul: V Pythonu so moduli posamezne datoteke, ki lahko vsebujejo funkcije, razrede in spre­men­ljiv­ke. Datoteke imajo končnico .py in pomagajo bolje or­ga­ni­zi­ra­ti kodo. Posamezne datoteke iz­bolj­šu­je­jo ber­lji­vost in vzdr­že­va­nje.
  • Paket: Paketi se prav tako upo­ra­blja­jo za or­ga­ni­za­ci­jo, vendar so struk­tu­ri­ra­ni v imenikih in mapah. To omogoča hi­e­rar­hič­no or­ga­ni­za­ci­jo modulov v kodi. Da se imenik obravnava kot paket, mora vsebovati datoteko __init__.py.

Vprašanje 5 na razgovoru za delo v Pythonu: Kaj sta pickling in un­pickling?

„Pickling“ in „un­pickling“ se nanašata na se­ri­a­li­za­ci­jo in de­se­ri­a­li­za­ci­jo notranjih objektov. Ti procesi omogočajo pretvorbo objektov v binarne po­dat­kov­ne pred­sta­vi­tve (pickling) ali pri­do­bi­va­nje objektov iz binarnih pred­sta­vi­tev (un­pickling).

  • Pickling: Pickling pretvori objekt v binarno pred­sta­vi­tev. To je pomembno, če želite podatke trajno shraniti ali prenesti v omrežje. Modul pickle se uporablja za pickling v Pythonu. Objekt se­ri­a­li­zi­ra tako, da ga pretvori v bajtni tok.
  • Raz­pa­ki­ra­nje: V nasprotju s postopkom pakiranja raz­pa­ki­ra­nje obnovi predhodno za­pa­ki­ra­ni objekt iz njegove binarne pred­sta­vi­tve. Modul pickle se uporablja tudi za raz­pa­ki­ra­nje in de­se­ri­a­li­zi­ra bajtni tok nazaj v Python objekt.

Vprašanje za razgovor o Pythonu 6: Kakšna je razlika med funkcijo in lambda funkcijo?

Na splošno imata oba tipa funkcij enak namen. Lambda funkcije so krajše in se pogosteje upo­ra­blja­jo za eno­stav­nej­še operacije in fil­tri­ra­nje. Glavne razlike med običajno funkcijo in lambda različico so povezane s sintakso, obsegom in področji uporabe.

  • Sintaksa: Lambda funkcije imajo bolj kompaktno sintakso, kar zadeva de­fi­ni­ci­jo, telo in vrnjeno vrednost. Na primer, za vrnjeno vrednost ni ek­s­pli­ci­tne­ga »return«, saj je vrednost izraza vrnjena im­pli­ci­tno. Zaradi tega so lambda izrazi še posebej primerni za kratke, jedrnate opise funkcij.
  • Obseg: Medtem ko lahko normalne funkcije vsebujejo več izjav in zapleteno logiko, so lambda funkcije omejene na en izraz. Lambda variante lahko upo­ra­blja­jo samo lokalne spre­men­ljiv­ke, ki so običajno omejene v svojem obsegu. Normalne funkcije pa lahko upo­ra­blja­jo tako lokalne kot globalne spre­men­ljiv­ke.
  • Področja uporabe: Običajne funkcije se lahko opre­de­li­jo kjerkoli v kodi. Lambda spre­men­ljiv­ke se pogosto upo­ra­blja­jo, kadar je potrebna krat­ko­traj­na funkcija, kot so sorted, filter ali map.

Vprašanje za razgovor o Pythonu 7: Katere vrste dedovanja obstajajo v Pythonu in kako Python obravnava večkratno dedovanje?

V Pythonu obstaja več vrst dedovanja. Možno je tako enojno kot večkratno dedovanje. Pri enojnem dedovanju ena razred deduje od enega star­še­vske­ga razreda, pri čemer izpeljani razred prevzame vse atribute in metode star­še­vske­ga razreda.

Pri več­kra­tnem dedovanju razred deduje iz več kot enega star­še­vske­ga razreda. Izpeljani razred lahko prevzame atribute in metode vseh star­še­vskih razredov.

V Pythonu se za večkratno dedovanje uporablja li­ne­a­ri­za­cij­ski algoritem C3 ali Method Re­so­lu­ti­on Order. Algoritem določa vrstni red, v katerem se metode rešujejo v hi­e­rar­hi­ji več­kra­tne­ga dedovanja. To za­go­ta­vlja, da se atributi in metode iščejo v doslednem in pred­vi­dlji­vem vrstnem redu. Python uporablja li­ne­a­ri­za­ci­jo, da prepreči znane težave z de­do­va­njem, kot je diamantni problem.

Vprašanje za razgovor o Pythonu 8: Kaj je monkey patching?

»Monkey patching« se nanaša na proces spre­mi­nja­nja obstoječe kode med iz­va­ja­njem. To se lahko na primer izvede z do­da­ja­njem ali zamenjavo funkcij ali metod. Monkey patching omogoča dinamične spremembe kode brez spre­mi­nja­nja izvorne kode izvirne razreda ali funkcije. Lahko je koristen za od­pra­vlja­nje napak, raz­šir­ja­nje funk­ci­o­nal­no­sti in pri­la­ga­ja­nje delov knjižnic ali okvirov. Pri razredih se lahko metode tudi pre­pi­su­je­jo in dodajajo nove metode.

Vprašanje za razgovor o Pythonu 9: Kakšne so razlike med Djangom, Pyramidom in Flaskom?

Django, Pyramid in Flask so spletni okviri za Python, ki se raz­li­ku­je­jo po pristopih, kom­ple­ksno­sti in raz­po­lo­žlji­vih funkcijah. Tukaj je nekaj glavnih razlik med njimi.

Django

Django je vi­so­ko­ka­ko­vo­sten spletni okvir, ki ponuja številne dodatne funkcije. Mnoge funkcije in moduli so vnaprej nameščeni. Django ima na primer lasten objektno-re­la­cij­ski pre­sli­ko­val­nik za in­te­rak­ci­jo z bazami podatkov. Ponuja tudi in­te­gri­ran ad­mi­ni­stra­tiv­ni vmesnik, ki po­e­no­sta­vlja upra­vlja­nje po­dat­kov­nih modelov.

URL-naslov in struktura apli­ka­ci­je sta vnaprej določena, kar olajša razvoj. Django daje velik poudarek kon­ven­ci­jam. Ponuja tudi vgrajeno av­ten­ti­fi­ka­ci­jo in av­to­ri­za­ci­jo ter vsebuje funkcije, kot so formule in zaščita CSRF. Okvir je najbolj primeren za napredne upo­rab­ni­ke, saj širok nabor funkcij in stroga struktura zahtevata daljše učenje.

Piramida

V nasprotju z vse­stran­sko­stjo Djanga je Pyramid lahek in pri­la­go­dljiv. Raz­vi­jal­cem omogoča izbiro želenih knjižnic in komponent ter je zasnovan tako, da je pri­la­go­dljiv in raz­šir­ljiv. Okvir podpira različne vrste aplikacij, od majhnih projektov do velikih, kom­ple­ksnih aplikacij.

Za razliko od Djanga, Pyramid nima pred­pi­sa­ne strukture aplikacij, kar omogoča več svobode pri or­ga­ni­za­ci­ji kode. Izbiranje predlog za predloge je prav tako odprto, saj Pyramid ne uporablja privzete.

Njegova pri­la­go­dlji­va uporaba in minimalne pred­na­sta­vi­tve znatno olajšajo učenje, zaradi česar je Pyramid bolj primeren za začetnike.

Kolba

Flask je t. i. mi­kro­o­kvir. Izvirno je bil zasnovan kot lahek in enostaven za uporabo. Da bi to omogočil, okvir ponuja le naj­nuj­nej­še. Po potrebi je mogoče z Flaskom dodati knjižnice.

Flask uporablja preprost in jasen API, ki omogoča hiter začetek razvoja. Okvir temelji na orodju WSGI „Werkzeug“ in uporablja predlogni motor Jinja2. Raz­vi­jal­ci lahko po potrebi vključijo tudi druge kom­po­nen­te.

Končno bo vaša izbira okvira odvisna od potreb vašega projekta in od tega, koliko prožnosti je potrebne. Django ponuja številne in­te­gri­ra­ne funkcije in jasno strukturo. Pyramid daje prednost prožnosti in pri­la­go­dlji­vo­sti. Flask pa se osre­do­to­ča na pre­pro­stost in mi­ni­ma­li­zem.

Vprašanje 10 na razgovoru za delo s Pythonom: Kaj pomenita »args« in »kwargs« v Pythonu?

Ti dve besedi pomenita po­zi­cij­ske argumente (args) in ključne argumente (kwargs). Obe sta kon­ven­ci­ji, ki se pogosto upo­ra­blja­ta pri opre­de­lje­va­nju funkcij z različnim številom ar­gu­men­tov, kar raz­vi­jal­cem omogoča dodatno prožnost. To je še posebej koristno, če na začetku ni jasno, koliko ali kakšni argumenti bodo na koncu na voljo.

Args se upo­ra­blja­jo, kadar se v funkciji sprejme spre­men­lji­vo število ar­gu­men­tov na podlagi položaja. To omogoča vnos ne­pred­ho­dno do­lo­če­ne­ga števila ar­gu­men­tov, ki so nato na voljo kot nizi v funkciji.

Kwargi so podobni. Upo­ra­blja­jo se za spre­je­ma­nje spre­men­lji­ve­ga števila ar­gu­men­tov na podlagi ključnih besed. To omogoča vnos ne­pred­ho­dno do­lo­če­ne­ga števila ar­gu­men­tov, ki so v funkciji na voljo kot slovar.

Če mora funkcija vsebovati tako spre­men­ljiv­ke po­zi­cij­ske kot ključne besede, je v Pythonu mogoče uporabiti args in kwargs v isti funkciji.

Go to Main Menu