CodeGym /Kursy /Python SELF PL /Konwersja typów danych

Konwersja typów danych

Python SELF PL
Poziom 5 , Lekcja 2
Dostępny

2.1 Określenie typu

Czasami w określonym miejscu kodu nie wiemy, jakie dane są dokładnie przechowywane w zmiennej. Do tego w Pythonie mamy funkcję type(), która jest używana do określenia typu obiektu.

To funkcja wbudowana, która zwraca typ wskazanego obiektu, co może być przydatne do debugowania, walidacji danych lub podczas implementacji logiki, zależnej od typów danych.

Zasada działania funkcji type()

Kiedy wywołujesz type(x), Python zwraca specjalny obiekt type, który reprezentuje typ zmiennej x. Na przykład:


x = 1
print(type(x))  # Wyświetli: <class 'int'>

x = "cześć"
print(type(x))  # Wyświetli: <class 'str'>

x = [1, 2, 3]
print(type(x))  # Wyświetli: <class 'list'>

Zwróć uwagę, że na ekranie wyświetli się słowo class. Dzieje się tak, ponieważ nawet typy int, str, list i inne są również klasami, tylko wbudowanymi — nie trzeba ich deklarować, są od razu dostarczane razem z Pythonem.

Praktyczne zastosowanie

Funkcja type() jest często używana w scenariuszach, gdzie konieczne jest rozróżnienie działań w oparciu o typ danych.

  • Różne działania mogą być wykonane w zależności od typu zmiennej.
  • W funkcjach i metodach, jako upewnienie się co do poprawności typów argumentów.

Jeśli chcesz upewnić się, że w zmiennej znajduje się liczba, napisz kod w następujący sposób:


arg = 123
if type(arg) == int:
    print(arg + 10)  # Wyświetli: 133               

Bardziej praktyczny przykład, gdzie sprawdzamy typ obiektu, który jest przechowywany w zmiennej:


arg = "123"
if type(arg) == int:
    print(arg + 10)  # To się nie wykona, ponieważ arg jest ciągiem znaków
elif type(arg) == str:
    print(arg + " world")  # Wyświetli: 123 world
else:
    print("Nieznany typ")               

2.2 Jawne określanie typu

W Pythonie jawne określanie typu obiektu odbywa się za pomocą funkcji konwersji typów, takich jak int(), float(), str(), tuple() i innych. Te funkcje pozwalają określić konkretny typ i konwertować dane z jednego typu na inny, co jest wygodne do przetwarzania danych wejściowych od użytkownika, wykonywania operacji matematycznych lub pracy z ciągami i kolekcjami danych.

Przykłady funkcji konwersji typów

int(): Konwertuje dane na liczbę całkowitą. Już wielokrotnie spotkaliśmy się z tą funkcją i wiemy, że jeśli przekażemy ciąg znaków z liczbą, to int() przekształci go w odpowiednią liczbę całkowitą.


num = int("123")  # num będzie liczbą całkowitą 123               

float(): Kolejna znana funkcja. Konwertuje dane na liczbę zmiennoprzecinkową.


num = float("123.45")  # num będzie 123.45               

str(): Konwertuje dowolny obiekt Pythona na jego reprezentację w formie ciągu znaków.


s = str(10.5)  # s będzie '10.5'               

tuple(): Konwertuje sekwencję na krotkę.


t = tuple([1, 2, 3])  # t stanie się (1, 2, 3)               

list(): Konwertuje obiekt iterowalny (na przykład ciąg znaków lub krotkę) na listę. Obiekt iterowalny to obiekt, który można sekwencyjnie przeglądać, na przykład ciągi znaków, listy lub krotki.


l = list("abc")  # l będzie ['a', 'b', 'c']               

dict(): Tworzy słownik z sekwencji klucz-wartość.


d = dict([(1, 'a'), (2, 'b')])  # d będzie {1: 'a', 2: 'b'}

O słownikach i krotkach opowiemy nieco później, ale myślę, że podstawowy sens już złapałeś: jeśli potrzebujesz jawnie określić jakiś typ, zawsze możesz skorzystać z powyższych funkcji.

2.3 Konwersja typów

W Pythonie jawne konwertowanie (lub przekształcanie) typów pozwala programistom kontrolować i zmieniać typy danych zmiennych. Może to być przydatne do zapewnienia zgodności danych w różnych operacjach lub do poprawienia typów danych, uzyskanych z danych wejściowych użytkownika lub przy odczycie z plików. W istocie konwersja typów i przekształcenie typów oznaczają to samo — proces zmiany typu danych obiektu na inny typ.

Z jawnym przekształceniem typów już się trochę zapoznaliśmy. Jest ono w Pythonie realizowane za pomocą wbudowanych funkcji, takich jak int(), float(), str(), tuple(), list(), dict(), set() i innych.

Dla utrwalenia podamy jeszcze kilka przykładów:

Funkcja Opis Przykład wejściowy Przykład wyjściowy
int() Konwersja na liczbę całkowitą int("10") 10
float() Konwersja na liczbę zmiennoprzecinkową float("20.5") 20.5
str() Konwersja na ciąg znaków str(15) "15"
tuple() Konwersja na krotkę tuple([1, 2, 3]) (1, 2, 3)
list() Konwersja na listę list("abc") ['a', 'b', 'c']
dict() Tworzenie słownika z par klucz-wartość dict([(1, 'one'), (2, 'two')]) {1: 'one', 2: 'two'}
set() Tworzenie zbioru z listy set([1, 1, 2, 2, 3, 3]) {1, 2, 3}

Przykłady użycia

Jawne przekształcenie typów jest używane w wielu scenariuszach, w tym:

  • Obsługa danych wejściowych użytkownika: Zapewnienie, że wprowadzone dane odpowiadają oczekiwanemu typowi danych.
  • Interoperacyjność danych: Kiedy dane z różnych źródeł lub API muszą być połączone lub porównane.
  • Obsługa błędów: Zapobieganie błędom czasu wykonania poprzez przekształcenie danych na odpowiedni typ przed wykonaniem operacji.

Najlepsze praktyki i ostrzeżenia

Jawne konwersje typów powinny być używane świadomie, aby uniknąć utraty danych (na przykład przy konwersji float na int) lub błędów konwersji (na przykład przy próbie konwersji nieliczbowego ciągu znaków na liczbę).

Ważne jest również, aby pamiętać, że niektóre konwersje mogą być nieoczywiste i prowadzić do nieoczekiwanych rezultatów, co wymaga dokładnej weryfikacji danych. Na przykład konwersja int na bool i odwrotnie może mieć nieoczekiwane efekty :)

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION