Python er et populært pro­gram­me­rings­sprog. Så hvis du søger et job som udvikler, kan du regne med at få de­tal­je­re­de spørgsmål om, hvordan det fungerer. Her ser vi på 10 Python-in­ter­viewspørgs­mål, du muligvis får, og hvordan du besvarer dem.

Python-in­ter­viewspørgs­mål 1: Hvad er det særlige ved Python, og hvilke fordele har sproget?

Python er et alsidigt pro­gram­me­rings­sprog, der kan bruges inden for we­b­ud­vik­ling, da­ta­a­na­ly­se og kunstig in­tel­li­gens. Det er utroligt bru­ger­ven­ligt, alsidigt og har god ydeevne – blot tre af grundene til, at mange aspi­re­ren­de pro­gram­mø­rer vælger det som det pro­gram­me­rings­sprog, de vil lære.

Det er et meget be­gyn­der­ven­ligt sprog med en let­for­stå­e­lig syntaks og et om­fat­ten­de stan­dard­bi­bli­o­tek, der in­de­hol­der mange færdige moduler og funk­tio­ner.

Andre fordele in­klu­de­rer det store, aktive fæl­les­skab af Python-udviklere, der bidrager med eksterne res­sour­cer og support til ud­vik­lings­pro­ces­sen. Som et for­tol­ken­de og ob­jekt­ba­se­ret sprog er det også velegnet til hurtigt at skrive kode og teste den med det samme. Dynamisk typning forbedrer sprogets flek­si­bi­li­tet yder­li­ge­re.

Ligesom Java er Python plat­formsu­af­hæn­gigt. Det kan in­te­gre­res pro­blem­frit med andre sprog, såsom C++, hvilket letter arbejde på tværs af platforme og potentiel yde­ev­ne­op­ti­me­ring.

Python-in­ter­viewspørgs­mål 2: Hvad menes der med ‘scope’ i Python?

‘Omfang’ henviser til det område, hvor en variabel er gyldig. Det er den del af koden, hvor variablen er synlig og til­gæn­ge­lig, og hvor variabler kan defineres og bruges. Det gør koden klarere og minimerer nav­ne­kon­flik­ter. Python har to ho­ved­ty­per af omfang:

  • Global ræk­ke­vid­de: Denne type variabel defineres uden for funk­tio­ner og klasser. Den er til­gæn­ge­lig i hele pro­gram­met og findes ofte i be­gyn­del­sen af koden eller på et højere niveau.
  • Lokalt omfang: Variabler i lokalt omfang er begrænset til den funktion, de er defineret i. De kan også tildeles til en specifikt defineret blok.

Hvis du vil have adgang til en variabel uden for den de­fi­ne­re­de kode, skal du udvide omfanget med en særlig sætning som ‘global’ eller ‘nonlocal’.

Python-in­ter­viewspørgs­mål 3: Hvad er for­skel­len mellem lister og tupler i Python?

I Python findes der to datatyper til lagring af ordnede samlinger af elementer: lister og tupler. Lister bruges typisk oftere på grund af deres flek­si­bi­li­tet. Her er nogle vigtige forskelle mellem de to:

  • For­an­der­lig­hed: Lister kan ændres, selv efter de er oprettet. Du kan tilføje, fjerne eller ændre elementer i dem. Derimod kan du ikke ændre ele­men­ter­ne i en tuple, efter den er oprettet.
  • Syntaks: Lister oprettes ved hjælp af fir­kan­te­de pa­ren­te­ser [], mens tupler bruger runde pa­ren­te­ser (). I mod­sæt­ning til lister kan tupler også defineres ved hjælp af kommaer i stedet for pa­ren­te­ser.
  • Hastighed: Hvilken datatype der er hurtigst, afhænger af kon­tek­sten. Lister er hurtigere i nogle ope­ra­tio­ner, f.eks. om­fat­ten­de da­ta­mo­di­fi­ka­tio­ner, fordi de er mutable. Tupler er hurtigere, når det gælder adgang til elementer i en samling.

Python-in­ter­viewspørgs­mål 4: Hvad er for­skel­len mellem moduler og pakker?

Moduler og pakker adskiller sig i deres an­ven­del­se. Moduler er in­di­vi­du­el­le filer med kode, mens pakker er samlinger af moduler inden for et bibliotek. Begge er beregnet til at hjælpe med at skabe en klar struktur, hvilket kan være nyttigt i større Python-projekter. Nogle andre forskelle mellem moduler og pakker er:

  • Modul: I Python er moduler in­di­vi­du­el­le filer, der kan indeholde funk­tio­ner, klasser og variabler. Filerne har endelsen .py og hjælper med at or­ga­ni­se­re koden bedre. At have in­di­vi­du­el­le filer hjælper med at forbedre læs­bar­he­den og ved­li­ge­hol­del­sen.
  • Pakke: Pakker bruges også til or­ga­ni­se­ring, men er struk­tu­re­ret i mapper og un­der­map­per. Dette gør det muligt at or­ga­ni­se­re moduler i koden hie­rar­kisk. For at en mappe kan behandles som en pakke, skal den indeholde filen __init__.py.

Python-in­ter­viewspørgs­mål 5: Hvad er pickling og un­pi­ck­ling?

‘Pickling’ og ‘un­pi­ck­ling’ refererer til se­ri­a­li­se­ring og de­se­ri­a­li­se­ring af interne objekter. Pro­ces­ser­ne gør det muligt at kon­ver­te­re objekter til binære da­ta­re­præ­sen­ta­tio­ner (pickling) eller hente objekter fra binære re­præ­sen­ta­tio­ner (un­pi­ck­ling).

  • Pickling: Pickling kon­ver­te­rer et objekt til binær re­præ­sen­ta­tion. Dette er vigtigt, hvis du vil gemme data permanent eller overføre data til et netværk. Pickle-modulet bruges til pickling i Python. Det se­ri­a­li­se­rer objektet ved at kon­ver­te­re det til en byte-stream.
  • Un­pi­ck­ling: I mod­sæt­ning til pickling-processen gendanner un­pi­ck­ling et tidligere picklet objekt fra dets binære re­præ­sen­ta­tion. Pickle -modulet bruges også til un­pi­ck­ling og de­se­ri­a­li­se­rer byte-strømmen tilbage til et Python-objekt.

Python-in­ter­viewspørgs­mål 6: Hvad er for­skel­len mellem en funktion og en lambda-funktion?

Over­ord­net set har de to funk­tions­ty­per samme formål. Lambda-funk­tio­ner er kortere og bruges oftere til enklere ope­ra­tio­ner og fil­te­ro­p­ga­ver. De vigtigste forskelle mellem en normal funktion og en lambda-variant vedrører syntaks, omfang og an­ven­del­ses­om­rå­der.

  • Syntaks: Lambda-funk­tio­ner har en mere kompakt syntaks, når det kommer til de­fi­ni­tion, krop og re­tur­vær­di. For eksempel er der ingen eksplicit ‘return’ for re­tur­vær­di­en, da udtrykket re­tur­ne­res implicit. Det gør lambda-udtryk særligt velegnede til korte, koncise funk­tions­be­skri­vel­ser.
  • Omfang: Mens normale funk­tio­ner kan indeholde flere sætninger og kompleks logik, er lambda-funk­tio­ner begrænset til ét udtryk. Lambda-varianter kan kun bruge lokale variabler, som typisk er begrænset i deres omfang. Normale funk­tio­ner kan derimod bruge både lokale og globale variabler.
  • An­ven­del­ses­om­rå­der: Normale funk­tio­ner kan defineres hvor som helst i koden. Lambda-variabler bruges ofte, hvor der er behov for en kortvarig funktion som sorteret, filter eller kort.

Python-in­ter­viewspørgs­mål 7: Hvilke typer arv findes der i Python, og hvordan håndterer Python multiple arv?

Der findes flere typer arv i Python. Både enkeltarv og flerarv er muligt. I enkeltarv arver en klasse fra en enkelt over­klas­se, og den afledte klasse overtager alle at­tri­but­ter og metoder fra over­klas­sen.

I multipel arv arver klassen fra mere end én over­ord­net klasse. Den afledte klasse kan overtage at­tri­but­ter­ne og metoderne fra alle de over­ord­ne­de klasser.

I Python bruges C3-li­ne­a­ri­se­rin­gal­go­rit­men eller Method Re­so­lu­tion Order til multiple arv. Al­go­rit­men bestemmer den ræk­ke­føl­ge, i hvilken metoder løses i et multiple arv-hierarki. Det sikrer, at at­tri­but­ter­ne og metoderne søges i en kon­si­stent og for­ud­si­ge­lig ræk­ke­føl­ge. Python bruger li­ne­a­ri­se­ring til at forhindre kendte arv­pro­ble­mer som di­a­mant­pro­ble­met.

Python-in­ter­viewspørgs­mål 8: Hvad er monkey patching?

‘Monkey patching’ refererer til processen med at ændre ek­si­ste­ren­de kode under kørsel. Dette kan f.eks. gøres ved at tilføje eller erstatte funk­tio­ner eller metoder. Monkey patching muliggør dynamiske ændringer af koden uden at ændre kil­de­ko­den for den op­rin­de­li­ge klasse eller funktion. Det kan være nyttigt til at rette fejl, udvide funk­tio­na­li­te­ter og tilpasse dele af bi­bli­o­te­ker eller rammer. Når det kommer til klasser, kan metoder også over­skri­ves, og nye metoder kan tilføjes.

Python-in­ter­viewspørgs­mål 9: Hvad er for­skel­len mellem Django, Pyramid og Flask?

Django, Pyramid og Flask er Python-webrammer, der adskiller sig med hensyn til deres tilgang, kom­plek­si­tet og til­gæn­ge­li­ge funk­tio­ner. Her er nogle af de vigtigste forskelle mellem dem.

Django

Django er et avanceret web-framework, der tilbyder en række ekstra funk­tio­ner. Mange funk­tio­ner og moduler er for­u­din­stal­le­ret. For eksempel har Django sin egen objekt-re­la­tio­nel­le kort­læg­ning til da­ta­ba­se­in­ter­ak­tion. Det tilbyder også en in­te­gre­ret admin-græn­se­fla­de, der forenkler ad­mi­ni­stra­tio­nen af da­ta­mo­del­ler.

URL-designet og struk­tu­ren i ap­pli­ka­tio­nen er for­ud­de­fi­ne­ret, hvilket gør ud­vik­lin­gen nemmere. Django lægger stor vægt på kon­ven­tio­ner. Det tilbyder også indbygget au­ten­ti­fi­ce­ring og au­to­ri­sa­tion og in­de­hol­der funk­tio­ner som formler og CSRF-be­skyt­tel­se. Fra­mewor­ket er bedst egnet til avan­ce­re­de brugere, da det store udvalg af funk­tio­ner og den strenge struktur gør det til en stejl læ­rings­kur­ve.

Pyramide

I mod­sæt­ning til Djangos om­fat­ten­de karakter er Pyramid let og flek­si­belt. Det giver udviklere mulighed for at vælge deres fo­re­truk­ne bi­bli­o­te­ker og kom­po­nen­ter og er designet til at være ska­ler­bart og ud­vi­de­ligt. Fra­mewor­ket un­der­støt­ter for­skel­li­ge typer ap­pli­ka­tio­ner, fra små projekter til store, komplekse ap­pli­ka­tio­ner.

I mod­sæt­ning til Django har Pyramid ikke en for­ud­be­stemt ap­pli­ka­tions­struk­tur, hvilket giver større frihed i or­ga­ni­se­rin­gen af koden. Valget af ska­be­lon­mo­tor er også åbent, da Pyramid ikke bruger en stan­dard­mo­tor.

Dens fleksible an­ven­del­se og minimale for­u­dindstil­lin­ger gør ind­læ­rings­kur­ven be­ty­de­ligt fladere, hvilket gør Pyramid bedre egnet til begyndere.

Kolbe

Flask er det, man kalder et mi­krof­ra­mework. Det blev op­rin­de­ligt designet til at være let og enkelt at bruge. For at gøre dette muligt tilbyder fra­mewor­ket kun det allermest nød­ven­di­ge. Hvis det er nød­ven­digt, kan der tilføjes bi­bli­o­te­ker med Flask.

Flask bruger et enkelt og over­sku­e­ligt API, der gør det muligt at komme hurtigt i gang med ud­vik­lin­gen. Fra­mewor­ket er baseret på WSGI-værk­tøjskas­sen ‘Werkzeug’ og bruger Jinja2-ska­be­lon­mo­to­ren. Udviklere kan også integrere andre kom­po­nen­ter efter behov.

I sidste ende afhænger dit valg af framework af dit projekts behov og hvor meget flek­si­bi­li­tet der kræves. Django tilbyder ad­skil­li­ge in­te­gre­re­de funk­tio­ner og en klar struktur. Pyramid pri­o­ri­te­rer flek­si­bi­li­tet og ska­ler­bar­hed. Og Flask fokuserer på enkelhed og mini­ma­lis­me.

Python-in­ter­viewspørgs­mål 10: Hvad betyder ‘args’ og ‘kwargs’ i Python?

De to udtryk står for po­si­tions­ar­gu­men­ter (args) og nøg­le­ord­s­ar­gu­men­ter (kwargs). Begge er kon­ven­tio­ner, der ofte bruges, når man definerer funk­tio­ner med et va­ri­e­ren­de antal ar­gu­men­ter, hvilket giver udviklere ekstra flek­si­bi­li­tet. Dette er især nyttigt, hvis det ikke fra starten er klart, hvor mange eller hvilke ar­gu­men­ter der i sidste ende vil blive leveret.

Args bruges, når et variabelt antal ar­gu­men­ter ac­cep­te­res i en funktion baseret på position. Dette gør det muligt at indtaste et ikke-for­ud­de­fi­ne­ret antal ar­gu­men­ter, som derefter er til­gæn­ge­li­ge som tupler i funk­tio­nen.

Kwargs er lignende. De bruges til at acceptere et variabelt antal ar­gu­men­ter baseret på nøgleord. Dette gør det muligt at indtaste et ikke-for­ud­de­fi­ne­ret antal ar­gu­men­ter, som er til­gæn­ge­li­ge i funk­tio­nen som en ordbog.

Hvis en funktion skal indeholde både variable po­si­tions­ar­gu­men­ter og nøg­le­ord­s­ar­gu­men­ter, er det muligt at bruge args og kwargs i samme funktion i Python.

Gå til ho­ved­me­nu­en