Python
Tekst

Koncepcja „przestrzeni nazw” w Pythonie i widoczność zmiennych

Lekcja 28 Moduł 5

Zmienne typu unmutable:

  • str
  • int
  • float
  • tuple
  • bool

Zmienne typu mutable:

  • list
  • dict
  • object


def funkcja_1(x):
    print("Funkcja_1")
    print(f"Podano: {x}")
    print(f"ID x = {id(x)}")
    id_1 = id(dana)
    print(f"ID dana = {id_1}")
    
def funkcja_1_g(x):
    print("Funkcja_1_g")
    global dana
    print(f"Podano: {x}")
    print(f"ID x = {id(x)}")
    id_1 = id(dana)
    print(f"ID dana = {id_1}")
    dana = 5
    
def funkcja_2(x):
    print("Funkcja_2")
    dana = 5
    print(f"Podano: {x}")
    id_1 = id(dana)
    id_2 = id(x)
    print(f"ID dana = {id_1}")
    print(f"ID x = {id_2}")
    
def funkcja_3(x):
    print("Funkcja_3")
    print(f"Podano: {x}")
    print(f"ID x = {id(x)}")
    id_1 = id(dana)
    id_2 = id(x)
    id_3 = id(mutable)
    print(f"ID dana = {id_1}")
    print(f"ID x = {id_2}")
    print(f"ID mutable = {id_3}")
    
def funkcja_4(x):
    print("Funkcja_4")
    print(f"Podano: {x}")
    print(f"ID x = {id(x)}")
    id_1 = id(dana)
    id_2 = id(x)
    id_3 = id(mutable)
    print(f"ID dana = {id_1}")
    print(f"ID mutable = {id_3}")
    mutable[1] = 2 * x
    mutable[3] = x
    print(f"ID mutable = {id_3}")
    

def funkcja_5(x):
    print("Funkcja_5")
    print(f"Podano: {x}")
    print(f"ID x = {id(x)}")
    id_1 = id(dana)
    id_2 = id(x)
    id_3 = id(mutable)
    print(f"ID dana = {id_1}")
    print(f"ID mutable = {id_3}")
    mutable[1] = 2 * x
    mutable[3] = x
    print(f"ID mutable = {id_3}")
    print("Teraz nowe mutable")
    mutable = 23
    id_4 = id(mutable)
    print(f"ID mutable = {id_4}")
    

dana = 20
mutable = { 1: 100, 2: "Adam"}
print("Wartości początkowe:")
print(f"dana = {dana}")
print(f"mutable = {mutable}")
print(f"ID GLOBAL dana = {id(dana)}")
print(f"ID GLOBAL mutable = {id(mutable)}")
print("----------------")
funkcja_1(35)
funkcja_1(dana)

print("----------------")
funkcja_2(35)
funkcja_2(dana)

print("----------------")
funkcja_1_g(35)

print("----------------")
funkcja_3(35)
funkcja_3(dana)

print("----------------")
funkcja_4(35)
funkcja_4(dana)

print("----------------")
# po wywołaniu tej funkcji wystąpi błąd:
# UnboundLocalError: local variable 'mutable' referenced before assignment
# funkcja_5(35)



print("----------------")
print("Wartości końcowe:")
print(f"dana = {dana}")
print(f"mutable = {mutable}")
print(f"ID GLOBAL dana = {id(dana)}")
print(f"ID GLOBAL mutable = {id(mutable)}")

Leave a comment

Comment as a guest:

Name * E-Mail *
Website
Pen