Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Co to jest przestrzeń nazw w Pythonie?

W programowaniu, szczególnie w języku Python, często spotykamy się z terminem “przestrzeń nazw” (ang. namespace). Jest to jeden z fundamentalnych konceptów, który pomaga zrozumieć, jak Python organizuje zmienne i inne obiekty w programie. Przestrzeń nazw to w zasadzie kontener, w którym nazwa jest mapowana na obiekt. Dzięki temu możliwe jest zarządzanie sposobem, w jaki nasze programy interpretują zmienne o tych samych nazwach, ale znajdujących się w różnych kontekstach.

Przykład użycia przestrzeni nazw

Aby zobrazować, jak działają przestrzenie nazw w Pythonie, przyjrzymy się prostemu przykładowi:

# Definiujemy funkcję, która tworzy lokalną przestrzeń nazw
def function():
    # Lokalna zmienna w funkcji
    local_var = "Jestem lokalna"

    # Wyświetlamy zmienną lokalną
    print(local_var)

# Globalna zmienna
global_var = "Jestem globalna"

# Wywołujemy funkcję
function()

# Spróbujmy wyświetlić lokalną zmienną poza funkcją
# To spowoduje błąd, ponieważ local_var jest dostępna
# tylko w przestrzeni nazw funkcji
# print(local_var)  # To wywoła błąd

# Wyświetlamy zmienną globalną
print(global_var)

W tym przykładzie zdefiniowaliśmy funkcję function, która tworzy własną, lokalną przestrzeń nazw. Zmienna local_var jest dostępna tylko wewnątrz tej funkcji. Poza nią, w przestrzeni globalnej, mamy zmienną global_var, którą można wywołać z dowolnego miejsca w naszym programie.

Jak Python zarządza przestrzeniami nazw?

Python posiada kilka typów przestrzeni nazw, wśród których najważniejsze to:

  • Przestrzeń nazw lokalna: Obejmuje nazwy zdefiniowane wewnątrz funkcji. Nie są dostępne poza funkcją.
  • Przestrzeń nazw globalna: Obejmuje nazwy zdefiniowane na poziomie modułu lub pliku skryptowego.
  • Przestrzeń nazw wbudowana: Zawiera wbudowane nazwy funkcji i wyjątków.

Kiedy odwołujemy się do konkretnej nazwy w programie, Python wyszukuje ją w następującej kolejności: najpierw w lokalnej przestrzeni nazw funkcji (jeśli taka istnieje), następnie w przestrzeni globalnej i na końcu w przestrzeni wbudowanej. Ten mechanizm wyszukiwania nazywamy “regułą LEGB” (Lokalna, Enclosing, Globalna, Builtin).

Podsumowanie

Przestrzenie nazw w Pythonie to potężny mechanizm pozwalający na izolację i organizację zmiennych oraz innych obiektów w naszym kodzie. Dzięki nim możliwe jest używanie tej samej nazwy dla różnych obiektów w zależności od kontekstu, w którym się znajdują. Zrozumienie tego konceptu jest kluczowe dla efektywnego programowania w Pythonie i pomaga uniknąć wielu błędów związanych z nazewnictwem i zakresem zmiennych.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs Python od podstaw w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.