Python: Dynamiczne tworzenie zmiennych w kodzie

7-sty-2020

W Pythonie występuje funkcja globals(), która zwraca tablicę przechowującą wszystkie zmienne sesji. Kiedy chcesz utworzyć nową zmienną, możesz po prostu dodać nowy element do tej listy

for i in range(0, 3):
    globals()['var_{}'.format(i)] = i * 100
    
print(var_0, var_1, var_2)

Tutaj przechodzimy pętlą for przez kod 3 razy i tworzymy zmienne o nazwach var_0, var_1 i var_2. Żeby się przekonać, że instrukcja wykorzystująca funkcję globals działa, wyświetlamy zmienne podając ich statyczne nazwy, jakie na tym etapie wykonania kodu powinny już istnieć.

Zależnie od wykorzystywanego edytora, przy linijce zawierającej ten kod może się pojawić ostrzeżenie:

Skoro ta metoda jest taka zła, to czego używać zamiast tego? Można by próbować z listą:

my_list = []

for i in range(0, 3):
    my_list.append(i * 100)
    
print(my_list[0], my_list[1], my_list[2])

Komentarze:

  1. MH napisał,

    Ciekawe to dynamiczne tworzenie zmiennych. Mysle se moze sie przydac gdy zmiennych trzeba stworzyc wiele i nie wiemy ile, jednak chyba lepsza jest do tego lista.

    W PHP mozna dynamicznie tworzyc zmienna z wartosci danej zmiennej. Kiedys widzialem takiego hacka jak:

    $$zmienna1

    Zastosowanie podwojnego dolara spowoduje ze stworzy sie zmienna o nazwie wartosci pierwszej zmiennej. Nie wiem czy w najnowszym PHP jest to mozliwe.

    Dziekuje za krotki choc fajny artykul . Pozdrawiam.

Autor: Rafał Kraik