Typer i Python

Denne artikel forklarer typer i Python.

YouTube Video

Typer i Python

typing-modulet i Python bruges til at introducere typehint i Python. Det blev oprindeligt introduceret i Python 3.5 og bruges til at forbedre kodelæsbarhed og vedligeholdelse. Typehint påvirker ikke udførelsen af koden, men muliggør typekontrol med IDE'er og statiske analyseværktøjer.

Grundlæggende om typehint

Typehint tydeliggør formålet med koden ved eksplicit at angive typerne for funktioner og variabler. I eksemplet herunder er typer angivet for argumenterne og returværdien.

1def add_numbers(a: int, b: int) -> int:
2    return a + b
3
4result: int = add_numbers(5, 10)
5print(result)  # 15

I koden ovenfor er a og b af typen heltal (int), og returværdien for funktionen er også eksplicit angivet som et heltal. Selv med typehint håndhæves typer ikke strengt, men der kan vises advarsler under udvikling, hvis der er typeuoverensstemmelser.

Vigtige typehint

typing-modulet i Python tilbyder forskellige klasser og funktioner til at definere typehint. Nedenfor er en liste over almindelige typehint.

  • int: heltal
  • str: streng
  • float: flydende-kommatalsnummer
  • bool: boolesk
  • List: liste
  • Dict: ordbog
  • Tuple: tuple
  • Set: sæt

List-typen

List-typen specificeres ved hjælp af List klassen. Du kan også eksplicit angive typen af elementer i en liste.

1from typing import List
2
3def sum_list(numbers: List[int]) -> int:
4    return sum(numbers)
5
6print(sum_list([1, 2, 3]))  # 6

I dette eksempel forventes alle elementer i listen at være af typen int.

Dict Type

En dictionary-type defineres ved hjælp af Dict. Typerne af nøgler og værdier kan specificeres.

1from typing import Dict
2
3def get_student_age(students: Dict[str, int], name: str) -> int:
4    return students.get(name, 0)
5
6students = {"Alice": 23, "Bob": 19}
7print(get_student_age(students, "Alice"))  # 23

I dette eksempel bruger dictionaryen str som nøgle-type og int som værdi-type.

Tuple Type

Tuples specificeres ved hjælp af Tuple typen. Du kan individuelt specificere typen af hvert element i en tuple.

1from typing import Tuple
2
3def get_person() -> Tuple[str, int]:
4    return "Alice", 30
5
6name, age = get_person()
7print(name, age)  # Alice 30

Her vises det, at get_person funktionen returnerer en tuple indeholdende en streng og et heltal.

Union Type

Union typen bruges til eksplicit at angive, at flere typer er acceptable.

1from typing import Union
2
3def process_value(value: Union[int, float]) -> float:
4    return value * 2.0
5
6print(process_value(10))  # 20.0
7print(process_value(3.5))  # 7.0

I dette eksempel tager process_value funktionen enten en int eller float som argument og returnerer et resultat af typen float.

Optional Type

Optional typen bruges, når en variabel muligvis kan være None. Den gives som en forkortelse for Union[Type, None].

1from typing import Optional
2
3def greet(name: Optional[str] = None) -> str:
4    if name is None:
5        return "Hello, Guest!"
6    return f"Hello, {name}!"
7
8print(greet())  # Hello, Guest!
9print(greet("Alice"))  # Hello, Alice!

Her vises det, at når name ikke specificeres, behandles det som None.

Generiske Typer

Generiske typer er en måde abstrakt at repræsentere, hvilken type elementer en datastruktur indeholder. I typing modulet kan du definere generiske typer ved hjælp af TypeVar.

1from typing import TypeVar, List
2
3T = TypeVar('T')
4
5def get_first_element(elements: List[T]) -> T:
6    return elements[0]
7
8print(get_first_element([1, 2, 3]))  # 1
9print(get_first_element(["a", "b", "c"]))  # a

I dette eksempel er get_first_element en funktion, der returnerer det første element i en liste, og den fungerer uanset listens type.

Type Aliases

Et type-alias er en måde at forenkle komplekse typedefinitioner ved at give dem et klart navn.

1from typing import List, Tuple
2
3Coordinates = List[Tuple[int, int]]
4
5def get_coordinates() -> Coordinates:
6    return [(0, 0), (1, 1), (2, 2)]
7
8print(get_coordinates())  # [(0, 0), (1, 1), (2, 2)]

I dette eksempel defineres et type-alias Coordinates for simpelt at repræsentere en type med tuples inde i en liste.

Sammendrag

typing-modulet i Python er meget nyttigt til at forbedre læsbarheden og vedligeholdelsen af koden. Ved korrekt brug af type hints kan du hjælpe med at forhindre typemismatches og fejl, især i større projekter eller teamsamarbejde. Typer er blot et udviklingsværktøj og påvirker ikke runtime-adfærden, hvilket bevarer kodens fleksibilitet.

Du kan følge med i ovenstående artikel ved hjælp af Visual Studio Code på vores YouTube-kanal. Husk også at tjekke YouTube-kanalen.

YouTube Video