Python 3.13 to najnowsza wersja języka programowania Python, która wprowadza wiele nowych funkcji i ulepszeń. W tym artykule omówimy najważniejsze, moim zdaniem, zmiany i nowości w Pythonie 3.13.
Nowy Interaktywny Interpreter
Jedną z największych nowości w Pythonie 3.13 jest nowy interaktywny interpreter. Ten nowy interpreter oferuje wiele ulepszeń, takich jak:
- Edycja wielowierszowa: Można edytować całe bloki kodu, a nie tylko pojedyncze linie. Strzałki pozwalają przechodzić pomiędzy liniami, jak w Vimie. Znacząco ułatwia to prace w interaktywnej konsoli. Już dlatego warto zrobić aktualizację.
![]()
Tryb wklejania: Można wklejać duże bloki kodu bez problemów z formatowaniem. To zdecydowanie ułatwia debugowanie kodu. Nie trzeba już się męczyć z
eval, które może być niebezpieczne. Z drugiej strony trzeba zachować ostrożność przy wklejaniu kodu pobranego z sieci.Kolorowe wyjście: Wyjście interpretera jest teraz kolorowe, co ułatwia czytanie kodu i komunikatów o błędach.
![]()
Niestety, kolorowanie wyjścia nie działa przy interaktywnej konsoli Django: manage.py shell
- Skróty klawiszowe: Dostępne są skróty klawiszowe:
- Up i Down przeskakują całe bloki kodu
- Ctrl + D wychodzi z powłoki Pythona
- pomoc można przywołać używając standardowego F1, F2 dla historii, F3 dla trybu wklejania
- dodatkowo pojawiła się komenda
clearktóra działa jak w wierszu poleceń - czyści ekran (w końcu!)
Eksperymentalny Kompilator JIT
Python 3.13 wprowadza eksperymentalny kompilator Just-In-Time (JIT). Ten kompilator może przyspieszyć wykonanie kodu, ale jest jeszcze w fazie eksperymentalnej i nie jest włączony domyślnie. Aby go włączyć, należy skompilować CPython z odpowiednimi flagami. Raczej nie przyda się nam w codziennej pracy.
Eksperymentalny Tryb Bez GIL
GIL (Global Interpreter Lock) to mechanizm, który zapobiega wykonywaniu kodu Pythona przez wiele wątków jednocześnie. W Pythonie 3.13, istnieje eksperymentalny tryb, który pozwala na wyłączenie GIL, umożliwiając pełną równoległość wątków. Ten tryb musi być włączony podczas kompilacji CPython.
Ulepszenia w Systemie Typów
Python 3.13 wprowadza kilka ulepszeń w systemie typów, które mogą pomóc w lepszym zrozumieniu i zarządzaniu typami w Twoim kodzie. Poniżej najważniejsza, moim zdaniem, zmiana:
Oznaczenia Tylko do Odczytu
Python 3.13 wprowadza nową funkcję typing.ReadOnly, która pozwala na oznaczenie wartości jako tylko do odczytu. Oznacza to, że wartość nie może być zmieniona po jej utworzeniu.
Uwaga: to działa tylko przy statycznym sprawdzaniu typów. mypy tego jeszcze nie obsługuje. Można użyć pyright.
Przykład:
from typing import TypedDict, ReadOnly
class ReadOnlyDict(TypedDict):
readonly_field: ReadOnly[str]
d = ReadOnlyDict(readonly_field="niezmienne")
print(d["readonly_field"]) # OK
d["readonly_field"] = "nowa wartość" # Błąd przy sprawdzaniu typów. Nie będzie błędu przy uruchomieniu.Podsumowanie
Python 3.13 to ważna aktualizacja, która wprowadza wiele nowych funkcji i ulepszeń. Nowy interaktywny interpreter, eksperymentalny kompilator JIT i tryb bez GIL to tylko niektóre z najważniejszych nowości. Ulepszenia w systemie typów i usunięcie przestarzałych modułów również przyczyniają się do poprawy jakości i wydajności języka. Jak dla mnie jest to must have.
Bonus:
Jak zaktualizować projekt oparty na poetry?
Po zainstalowaniu pythona 3.13 w systemie wystarczy wykonać komendę poetry env use $(which python3). Potem odświeżyć biblioteki: poetry install i zweryfikować instalacje: poetry run python --version.
Źródła:
https://www.infoworld.com/article/2337441/the-best-new-features-and-fixes-in-python-313.html
https://www.infoq.com/news/2024/10/python-313-latest-features/
https://www.reddit.com/r/programming/comments/1fro7aa/reviewing_new_typing_features_in_python_313/
https://www.geeksforgeeks.org/python-3-13-new-features/
https://www.phoronix.com/news/Python-3.13-Released
Dołącz do społeczności PyMasters, gdzie możesz wziąć udział w ciekawych projektach i podnosić swoje umiejętności w Pythonie i Django.
Pobierz mój bezpłatny ebook: WARSZTAT JUNIORA Przewodnik po kluczowych kompetencjach i narzędziach dla początkującego programisty Pythona
Zapraszam do zadawania pytań przez formularz kontaktowy. Pamiętaj, że jeśli potrzebujesz wsparcia, możesz napisać do mnie - pomogę.
Spodobał Ci się post?
Podziel się nim!
Masz uwagi do posta, chcesz porozmawiać, szukasz pomocy z Pythonem i Django? Napisz do mnie!