Python är ett populärt pro­gram­me­rings­språk. Om du söker jobb som ut­veck­la­re kan du därför räkna med att få de­tal­je­ra­de frågor om hur det fungerar. Här tittar vi på 10 Python-in­ter­vjufrå­gor som du kan få och hur du kan svara på dem.

Python-in­ter­vjufrå­ga 1: Vad är speciellt med Python och vilka fördelar har språket?

Python är ett mångsidigt pro­gram­me­rings­språk som kan användas inom web­b­ut­veck­ling, da­taa­na­lys och ar­ti­fi­ci­ell in­tel­li­gens. Det är otroligt an­vän­dar­vän­ligt, mångsidigt och har bra prestanda – bara tre av an­led­ning­ar­na till att många blivande pro­gram­me­ra­re väljer det som sitt pro­gram­me­rings­språk.

Det är ett mycket ny­bör­jar­vän­ligt språk med en lätt­för­stå­e­lig syntax och ett om­fat­tan­de stan­dard­bib­li­o­tek som in­ne­hål­ler många färdiga moduler och funk­tio­ner.

Andra fördelar är den stora, aktiva ge­men­ska­pen av Python-ut­veck­la­re, som bidrar med externa resurser och stöd till ut­veck­lings­pro­ces­sen. Som ett tolk­nings­bart och ob­jekt­ba­se­rat språk är det också väl lämpat för att snabbt skriva kod och testa den ome­del­bart. Dynamisk typning för­bätt­rar språkets flex­i­bi­li­tet yt­ter­li­ga­re.

Precis som Java är Python platt­form­so­be­ro­en­de. Det kan in­te­gre­ras sömlöst med andra språk, såsom C++, vilket un­der­lät­tar platt­form­so­be­ro­en­de arbete och möjliggör pre­stan­da­op­ti­me­ring.

Python-in­ter­vjufrå­ga 2: Vad menas med ”scope” i Python?

“Om­fatt­ning” avser det område där en variabel är giltig. Det är den del av koden där variabeln är synlig och till­gäng­lig, och där variabler kan de­fi­nie­ras och användas. Det gör koden tydligare och minimerar namn­giv­nings­kon­flik­ter. Python har två hu­vud­ty­per av om­fatt­ning:

  • Globalt omfång: Denna typ av variabel de­fi­nie­ras utanför funk­tio­ner och klasser. Den är till­gäng­lig i hela pro­gram­met och finns ofta i början av koden eller på en högre nivå.
  • Lokal räckvidd: Variabler med lokal räckvidd är be­grän­sa­de till den funktion där de de­fi­nie­ras. De kan också tilldelas ett specifikt de­fi­ni­e­rat block.

Om du vill komma åt en variabel utanför den de­fi­ni­e­ra­de koden måste du utöka räck­vid­den med ett speciellt uttryck som “global” eller “nonlocal”.

Python-in­ter­vjufrå­ga 3: Vad är skill­na­den mellan listor och tupler i Python?

I Python finns det två datatyper för lagring av ordnade samlingar av element: listor och tupler. Listor används van­ligt­vis oftare på grund av sin flex­i­bi­li­tet. Här är några viktiga skill­na­der mellan de två:

  • För­än­der­lig­het: Listor kan mo­di­fie­ras även efter att de har skapats. Du kan lägga till, ta bort eller ändra element i dem. Däremot kan du inte ändra elementen i en tupel efter att den har skapats.
  • Syntax: Listor skapas med hjälp av hak­pa­ren­te­ser [], medan tupler använder runda pa­ren­te­ser (). Till skillnad från listor kan tupler också de­fi­nie­ras med hjälp av kom­ma­tec­ken istället för pa­ren­te­ser.
  • Hastighet: Vilken datatyp som är snabbast beror på sam­man­hang­et. Listornas mu­ta­bi­li­tet gör dem snabbare i vissa ope­ra­tio­ner, som om­fat­tan­de da­ta­mo­di­fi­e­ring­ar. Tupler är snabbare när det gäller att komma åt element i en samling.

Python-in­ter­vjufrå­ga 4: Vad är skill­na­den mellan moduler och paket?

Moduler och paket skiljer sig åt i sina tillämp­ning­ar. Moduler är enskilda filer med kod, medan paket är samlingar av moduler i en katalog. Båda är avsedda att bidra till att skapa en tydlig struktur, vilket kan vara till hjälp i större Python-projekt. Några andra skill­na­der mellan moduler och paket är:

  • Modul: I Python är moduler enskilda filer som kan innehålla funk­tio­ner, klasser och variabler. Filerna har ändelsen .py och hjälper till att or­ga­ni­se­ra koden på ett bättre sätt. Att ha enskilda filer bidrar till att förbättra läs­bar­he­ten och un­der­hål­let.
  • Paket: Paket används också för att or­ga­ni­se­ra, men är struk­tu­re­ra­de i kataloger och mappar. Detta gör det möjligt att or­ga­ni­se­ra modulerna i koden hi­e­rar­kiskt. För att en katalog ska behandlas som ett paket måste den innehålla filen __init__.py.

Python-in­ter­vjufrå­ga 5: Vad är pickling och un­pick­ling?

“Pickling” och “un­pick­ling” avser se­ri­a­li­se­ring och de­se­ri­a­li­se­ring av interna objekt. Pro­ces­ser­na gör det möjligt att kon­ver­te­ra objekt till binära da­ta­re­pre­sen­ta­tio­ner (pickling) eller hämta objekt från binära re­pre­sen­ta­tio­ner (un­pick­ling).

  • Pickling: Pickling omvandlar ett objekt till binär re­pre­sen­ta­tion. Detta är viktigt om du vill spara data permanent eller överföra data till ett nätverk. Pickle-modulen används för pickling i Python. Den se­ri­a­li­se­rar objektet genom att omvandla det till en byte-ström.
  • Un­pick­ling: I en om­vänd­ning av pickling-processen åter­stäl­ler un­pick­ling ett tidigare picklat objekt från dess binära re­pre­sen­ta­tion. Pickle-modulen används också för un­pick­ling och de­se­ri­a­li­se­rar byte-strömmen tillbaka till ett Python-objekt.

Python-in­ter­vjufrå­ga 6: Vad är skill­na­den mellan en funktion och en lambda-funktion?

Sam­man­ta­get har de två funk­tion­sty­per­na samma syfte. Lamb­da­funk­tio­ner är kortare och används oftare för enklare ope­ra­tio­ner och fil­ter­upp­gif­ter. De vik­ti­gas­te skill­na­der­na mellan en normal funktion och en lambda-variant har att göra med syntax, om­fatt­ning och an­vänd­nings­om­rå­den.

  • Syntax: Lamb­da­funk­tio­ner har en mer kompakt syntax när det gäller de­fi­ni­tion, kropp och re­tur­vär­de. Det finns till exempel inget explicit “return” för re­tur­vär­det, eftersom ut­tryc­kets värde re­tur­ne­ras implicit. Det gör lamb­daut­tryck särskilt väl lämpade för korta, koncisa funk­tions­be­skriv­ning­ar.
  • Om­fatt­ning: Medan normala funk­tio­ner kan innehålla flera satser och komplex logik, är lambda-funk­tio­ner be­grän­sa­de till ett uttryck. Lambda-varianter kan endast använda lokala variabler, som van­ligt­vis är be­grän­sa­de i sin om­fatt­ning. Normala funk­tio­ner kan däremot använda både lokala och globala variabler.
  • An­vänd­nings­om­rå­den: Normala funk­tio­ner kan de­fi­nie­ras var som helst i koden. Lambda-variabler används ofta där en kortlivad funktion som sortering, fil­tre­ring eller kart­lägg­ning krävs.

Python-in­ter­vjufrå­ga 7: Vilka typer av arv finns det i Python och hur hanterar Python multipel arv?

Det finns flera typer av arv i Python. Både enkel arv och multipel arv är möjliga. I enkel arv ärver en klass från en enda över­ord­nad klass och den härledda klassen antar alla attribut och metoder från den över­ord­na­de klassen.

Vid multipel arv ärver klassen från mer än en över­ord­nad klass. Den härledda klassen kan anta at­tri­bu­ten och metoderna från alla över­ord­na­de klasser.

I Python används C3-lin­jä­ri­se­rings­al­go­rit­men eller Method Re­so­lu­tion Order för multipel arv. Al­go­rit­men bestämmer i vilken ordning metoderna löses i en multipel arvs­hi­e­rar­ki. Det sä­ker­stäl­ler att at­tri­bu­ten och metoderna söks i en kon­se­kvent och för­ut­säg­bar ordning. Python använder lin­jä­ri­se­ring för att förhindra kända arv­pro­blem som di­a­mant­pro­ble­met.

Python-in­ter­vjufrå­ga 8: Vad är monkey patching?

“Monkey patching” avser processen att modifiera befintlig kod under körning. Detta kan till exempel göras genom att lägga till eller ersätta funk­tio­ner eller metoder. Monkey patching möjliggör dynamiska ändringar av koden utan att modifiera källkoden för den ur­sprung­li­ga klassen eller funk­tio­nen. Det kan vara an­vänd­bart för att åtgärda fel, utöka funk­tio­ner och anpassa delar av bibliotek eller ramverk. När det gäller klasser kan metoder också skrivas över och nya metoder kan läggas till.

Python-in­ter­vjufrå­ga 9: Vad är skill­na­der­na mellan Django, Pyramid och Flask?

Django, Pyramid och Flask är Python-webb­ram­verk som skiljer sig åt när det gäller till­vä­ga­gångs­sätt, kom­plex­i­tet och till­gäng­li­ga funk­tio­ner. Här är några av de vik­ti­gas­te skill­na­der­na mellan dem.

Django

Django är ett högni­våwebb­ram­verk som erbjuder en rad yt­ter­li­ga­re funk­tio­ner. Många funk­tio­ner och moduler är förinstal­le­ra­de. Django har till exempel en egen ob­jekt­re­la­te­rad mappning för da­ta­ba­sin­ter­ak­tion. Det erbjuder också ett in­te­gre­rat ad­mi­nist­ra­törs­gräns­snitt som förenklar han­te­ring­en av da­ta­mo­del­ler.

Ap­pli­ka­tio­nens URL-design och struktur är för­de­fi­ni­e­ra­de, vilket un­der­lät­tar ut­veck­ling­en. Django lägger stor vikt vid kon­ven­tio­ner. Det erbjuder även inbyggd au­ten­ti­se­ring och auk­to­ri­se­ring och in­ne­hål­ler funk­tio­ner som formler och CSRF-skydd. Ramverket passar bäst för avan­ce­ra­de användare, eftersom det stora utbudet av funk­tio­ner och den strikta struk­tu­ren gör in­lär­nings­kur­van brant.

Pyramid

Till skillnad från Djangos om­fat­tan­de funk­tio­ner är Pyramid lätt­vik­tigt och flexibelt. Det gör det möjligt för ut­veck­la­re att välja önskade bibliotek och kom­po­nen­ter och är utformat för att vara skalbart och ut­bygg­bart. Ramverket stöder olika typer av ap­pli­ka­tio­ner, från små projekt till stora, komplexa ap­pli­ka­tio­ner.

Till skillnad från Django har Pyramid ingen fö­re­skri­ven ap­pli­ka­tions­struk­tur, vilket ger större frihet att or­ga­ni­se­ra koden. Valet av mallmotor är också fritt, eftersom Pyramid inte använder någon stan­dard­mall­mo­tor.

Dess flexibla an­vänd­ning och minimala förin­ställ­ning­ar gör in­lär­nings­kur­van betydligt flackare, vilket gör Pyramid bättre lämpad för nybörjare.

Flaska

Flask är vad man kallar ett mik­ro­framework. Det var ur­sprung­li­gen utformat för att vara lätt­vik­tigt och enkelt att använda. För att un­der­lät­ta detta erbjuder fram­ewor­ket endast det vä­sent­li­ga. Vid behov kan bibliotek läggas till med Flask.

Flask använder ett enkelt och tydligt API som gör det möjligt att snabbt komma igång med ut­veck­ling­en. Ramverket baseras på WSGI-verk­tygs­lå­dan ”Werkzeug” och använder mall­mo­torn Jinja2. Ut­veck­la­re kan också integrera andra kom­po­nen­ter efter behov.

I slutändan beror valet av ramverk på pro­jek­tets behov och hur mycket flex­i­bi­li­tet som krävs. Django erbjuder många in­te­gre­ra­de funk­tio­ner och en tydlig struktur. Pyramid pri­o­ri­te­rar flex­i­bi­li­tet och skal­bar­het. Och Flask fokuserar på enkelhet och mi­ni­ma­lism.

Python-in­ter­vjufrå­ga 10: Vad står “args” och “kwargs” för i Python?

De två termerna står för po­si­tions­ar­gu­ment (args) och nyc­kelord­sar­gu­ment (kwargs). Båda är kon­ven­tio­ner som ofta används när man de­fi­ni­e­rar funk­tio­ner med ett va­ri­e­ran­de antal argument, vilket ger ut­veck­la­re yt­ter­li­ga­re flex­i­bi­li­tet. Detta är särskilt an­vänd­bart om det inte är klart från början hur många eller vilken typ av argument som kommer att till­han­da­hål­las i slutändan.

Args används när ett va­ri­e­ran­de antal argument ac­cep­te­ras i en funktion baserat på position. Detta gör det möjligt att ange ett icke-för­de­fi­ni­e­rat antal argument, som i sin tur är till­gäng­li­ga som tupler i funk­tio­nen.

Kwargs är liknande. De används för att acceptera ett va­ri­e­ran­de antal argument baserat på nyckelord. Detta gör det möjligt att ange ett icke-för­de­fi­ni­e­rat antal argument, som är till­gäng­li­ga i funk­tio­nen som en ordbok.

Om en funktion behöver innehålla både variabla po­si­tions­ar­gu­ment och nyc­kelord­sar­gu­ment är det möjligt att använda args och kwargs i samma funktion i Python.

Gå till huvudmeny