Grunder
Den här sidan skrivs som studiematerial för mig. Fler sidor kan byggas mer utförligt.
En bra princip i Python är att arbeta i virtuella miljöer. I en virtuell miljö installeras en specifik version av Python och tillhörande paket i en kombination som kan vara unik för just den här miljön.
Aktivera virtuell miljö (Linux) via:
python3 -m venv myenv
source myenv/bin/activate
Nu ska prompten visa (myenv)$.
Paket kan nu installeras i miljön via pip, Pythons pakethanterare. Ex. pip install paketnamn. Vill man alltid ha samma version av ett paketnamn slår man paketnamn==1.1.1, då installeas alltid version 1.1.1. Slår man paketnamn>=1.0 installeras 1.0 eller högre.
Paket kan man söka efter på https://pypi.org/search.
För att stänga av miljön slå deactivate.
Bra arbetssätt är att använda en requirements.txt fil. I den filen ska alla paket man önskar använda finnas, ex:
jmespath==1.0.1
jq==1.7.0
jsonpath-ng==1.5.3
lxml==4.9.3
markdown-it-py==3.0.0
Sedan kan man installera alla paket i miljön med pip install -r requirements.txt.
Om man vill spara de paket man för tillfället har installerade i en venv kan man göra det genom pip freeze > requirements.txt.
Datatyper
Ett objekt som är mutable kan förändras och ett objekt som är immutable kan ej förändras. En variabel kan fortfarande förändras genom att tilldela om den, men datatypen kan inte modifieras.
| Namn | Typ | Mutable | Beskrivning |
| Integer | int | Nej | Hela nummer utan decimaler, ex. 6, 600 och 1589 |
| Float | Ej hela nummer, ex. 1337.1337 | ||
| Boolean | bool | Nej | Ett jämförbart värde, kan bara vara True eller False |
| String | str | Nej | Sekvens av text avgränsad av citatttecken, såsom "Cisco, "Piper" och "2000" |
| List | list | Ja | Strukterad sekvens av objekt, ex. [10, "DNA", 19.8] |
| Tuple | tup | Nej | Strukterad sekvens av immutable objects, ex. (10, "DNS", 19.8) |
| Dictionary | dict | Ja | Ostrukterad key:value pairs, ex. {"key1":"value1","name":"Pip"[} |
| Set | set | Ja | Ostrukterad samling av unika object, ex. {"a","b"} |
Variabel
En variabel är ett värde i Python som är mappad till ett Pythonobjekt som är sparat i minne. Ex. supervariabel = 1337 är då en variabel där supervariabel matchar Integer 1337.
[jehrlander@bash python]python3
Python 3.12.13 (main, Jul 10 2026, 00:00:00) [GCC 14.3.1 20251022 (Red Hat 14.3.1-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> supervariabel = 1337
>>> print(supervariabel)
1337
>>> type(supervariabel)
<class 'int'>
Om man istället använder supervariabel = "1337" så blir det en String och inte en Integer.
>>> supervariabel = "1337"
>>> type(supervariabel)
<class 'str'>
En integer innehåller inte decimale: har den decimaler så blir det en float.
>>> supervariabel = 1337
>>> type(supervariabel)
<class 'int'>
>>> supervariabel = 1337.1337
>>> type(supervariabel)
<class 'float'>
Listor
Python har inte arrays. I Python kan man använda sig av listor. En lista kan innehålla alla typer av dataobjekt, även andra listor.
>>> switchar = ['Sw1', 'Sw2', 'Sw3']
>>> switchar
['Sw1', 'Sw2', 'Sw3']
>>> type(switchar)
<class 'list'>
>>> routrar = ['R1', 'R2']
>>> natvarksprylar = [switchar, routrar]
>>> natvarksprylar
[['Sw1', 'Sw2', 'Sw3'], ['R1', 'R2']]
>>> type(natvarksprylar)
<class 'list'>
Listor är att föredra över tuples när ett värde kan förändras, då listor är mutable.
Tuples
Tuples är lika listor, men de är inte skrivbara (immutable). Råkar man göra såhär så blir det en tuple istället:
>>> natvarksprylar = switchar,routrar
>>> natvarksprylar (['Sw1', 'Sw2', 'Sw3'], ['R1', 'R2'])
>>> type(natvarksprylar) <class 'tuple'>
Men regeln är att för att skapa en tuple använder man parantes istället för hakparantes. Så korrekt sätt att gskapa tuple är:
>>> natvarksprylar = (switchar, routrar)
>>> type(natvarksprylar)
<class 'tuple'>
En tuple är bra och effektiv att använda när värdet aldrig förändras, då tuple är immutable.
Dictionary
En dictionary är ett till sätt att skapa en samling av värden. Dictionary används när man behöver data som är ihopkopplat med ett visst värde, key:value.
>>> R1 = { "os":"Cisco IOS-XE", "hardware":"IR1101", "location":"Mordor" }
>>> type(R1)
<class 'dict'>
>>> R1["hardware"]
'IR1101'
>>> R1["location"]
'Mordor'
Det går att lägga till en dictionary till sin redan existerande dictionary:
>>> R1["installed_date"] = {"year":"2026", "month":"07", "day":"21"}
>>> R1["installed_date"]
{'year': '2026', 'month': '07', 'day': '21'}
>>> R1
{'os': 'Cisco IOS-XE', 'hardware': 'IR1101', 'location': 'Mordor', 'installed_date': {'year': '2026', 'month': '07', 'day': '21'}}
En bra tumregel för att hålla koll på listor/tuples/dictionary är:
[]→ skapar en list{}→ skapar ett dict (eller ett set om det bara innehåller värden)()används ofta för gruppering, men kommatecknet är det som faktiskt skapar en tuple.
Sets
Sets är mutable. Man kan göra sets till frozen sets vilket gör de immutable.
>>> nummer = {1, 2, 3, 4, 5}
>>> type(nummer)
<class 'set'>
>>> udda_nummer = {1, 3, 5, 7}
# Lägg ihop två sets
>>> nummer | udda_nummer
{1, 2, 3, 4, 5, 7}
# Se vilka värden som finns i båda sets
>>> nummer & udda_nummer
{1, 3, 5}
Input och output
input() är en funktion som tar det man skriver och gör det möjligt att spara det till en variabel. Med funktionen print kan man sedan visa det i terminalen. Exempel:
>>> inpt = input('Skriv ditt namn: ')
Skriv ditt namn: Jehrlander
>>> print(inpt)
Jehrlander
>>> type(inpt)
<class 'str'>
Det som skriv ut med print-funktionen har en implicit newline character (\n) på slutet.
print-funktionen använder en separera melan element. Det kan göra att en print inte ser jättesnygg ut, ex:
>>> numbs = {1, 2, 4, 5, 6, 7, 10 }
>>> print('Numbers in set', 1, ':', numbs )
Numbers in set 1 : {1, 2, 4, 5, 6, 7, 10}
Slänger man på en sep='' (två enkelcitattecken) så tas automatiska mellanrum bort och man kan lägga till egna på ett snyggt sätt:
>>> print('Numbers in set ', 1, ': ', numbs, sep='' )
Numbers in set 1: {1, 2, 4, 5, 6, 7, 10}
Från Python3.6 och senare kan man använda sig av fstrings, vilket gör formattering och användning av print-funktionen väldigt enkel:
>>> value1 = 'Jehrlander'
>>> value2 = 1337
>>> print(f'{value1} gillar {value2} väldigt mycket')
Jehrlander gillar 1337 väldigt mycket
Indenteringar
I Python används indenteringar för att dela upp kod. I exempelvis if statemens krävs detta för att koden ska fungera. Det går att göra lite hur man vill, bara man är konsekvent, exempelvis fungerar det att bara använda ett mellanslag. Rekommendationen/best practice är att använda fyra mellanslag.
Exempel på om man glömmer indentering:
>>> n = 20
>>> if n == 20:
... print('N är 20')
File "<stdin>", line 2
print('N är 20')
^^^^^
IndentationError: expected an indented block after 'if' statement on line 1
Vilkorssatser och loopar
Eller conditional and loops. Tre primära sätt finns:
- if - värden jämförs och beslut tas därefter
- for - en räknande loop som går igenom data ett specifikt antal gånger
- while - en loop som utförs så länge vissa förhållanden nås
if
Ett if-statement börjar med if och utför en jämförelse för att se om ett förhållande är sannt eller ej. Här är ett väldigt enkelt exempel:
>>> n = 20
>>> if n == 20:
... print('N är 20.')
...
N är 20.