Typer i Python

Denne artikkelen forklarer typer i Python.

YouTube Video

Typer i Python

typing-modulen i Python brukes til å introdusere typehint i Python. Den ble opprinnelig introdusert i Python 3.5 og brukes til å forbedre lesbarhet og vedlikehold av kode. Typehint påvirker ikke kjøretiden til koden, men tillater typekontroll med IDE-er og statiske analyserverktøy.

Grunnleggende om Typehint

Typehint klargjør intensjonen med koden ved å eksplisitt spesifisere typene til funksjoner og variabler. I eksempelet nedenfor er typer spesifisert for argumentene og returverdien.

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 av typen heltall (int), og returverdien til funksjonen er også eksplisitt angitt som et heltall. Selv med typehint håndheves ikke typer strengt, men advarsler kan vises under utvikling hvis det er typekonflikter.

Viktige Typehint

typing-modulen i Python gir ulike klasser og funksjoner for å definere typehint. Nedenfor er en liste over vanlige typehint.

  • int: heltall
  • str: streng
  • float: flyttall
  • bool: boolsk
  • List: liste
  • Dict: ordbok
  • Tuple: tuppel
  • Set: sett

List-type

Liste-typen spesifiseres ved hjelp av List-klassen. Du kan også eksplisitt spesifisere typen til elementene 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 eksempelet forventes alle elementene i listen å være av typen int.

Dict-Type

En ordboktype defineres ved bruk av Dict. Typene for nøklene og verdiene kan spesifiseres.

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 eksempelet bruker ordboken str som nøkkeltype og int som verditype.

Tuple-Type

Tuples spesifiseres ved bruk av Tuple-typen. Du kan spesifisere typen for hvert enkelt 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 funksjonen get_person returnerer en tuple som inneholder en streng og et heltall.

Union-Type

Union-typen brukes for å eksplisitt indikere at flere typer er akseptable.

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 eksempelet tar funksjonen process_value enten en int eller float som argument og returnerer et resultat av typen float.

Optional-Type

Optional-typen brukes når en variabel kan være None. Det brukes 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 viser det at når name ikke er spesifisert, behandles det som None.

Generiske Typer

Generiske typer er en metode for abstrakt å representere hvilke typer elementer en datastruktur inneholder. I typing-modulen kan du definere generiske typer ved hjelp av 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 eksempelet er get_first_element en funksjon som returnerer det første elementet i en liste, og den fungerer uansett hvilken type listen har.

Typealiaser

Et typealias er en måte å forenkle komplekse typedefinisjoner ved å gi dem et tydelig 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 eksempelet er et typealias Coordinates definert for enkelt å representere en type med tupler i en liste.

Sammendrag

typing-modulen i Python er svært nyttig for å forbedre lesbarheten og vedlikeholdbarheten av koden. Ved å bruke typehints riktig, kan du bidra til å forhindre typefeil og bugs, spesielt i storskala prosjekter eller teamutvikling. Typer er bare et utviklingsstøtteverktøy og påvirker ikke kjøretidsadferden, og opprettholder dermed fleksibiliteten i koden.

Du kan følge med på artikkelen ovenfor ved å bruke Visual Studio Code på vår YouTube-kanal. Vennligst sjekk ut YouTube-kanalen.

YouTube Video