Zastanawiasz się, czy ktoś miał jakiekolwiek przemyślenia na temat użycia globalnego Pythona w porównaniu do samego modułu. Podczas gdy w przeszłości Kiedyś globalny, gdy są potrzebne, znalazłem to nieco jaśniejsze zrobić drugą metodę (a ostatnio mają tendencję do faworyzowania tej składni):Python używa globalnego vs określając moduł
import sys
mod = sys.modules[__name__]
counter = 0
def incrementGlobal():
global counter
counter += 1
def incrementMod():
mod.counter += 1
Oczywiście oboje pracują dobrze, ale jeśli ktoś ma jakieś mocne opinie (co jest bardziej pythonic, wydajność itp.), chciałbym je usłyszeć.
Btw I kończy się przy użyciu jednego z nich w sytuacjach, gdy moduł naturalnie hermetyzuje wszystkie metody i atrybuty, co byłoby jednej klasy, a zamiast odniesienia incrementmodule.IncrementClass.counter mogę po prostu użyć incrementmodule.counter.
W jaki sposób drugi jest bardziej przejrzysty? – delnan
Domyślam się, że to nie jest tak jasne, ale wolę, ponieważ zmienna na poziomie modułu jest modyfikowana, a nie lokalna (nie musisz sprawdzać, czy zmienna znajduje się w deklaracji globals u góry) – gnr
Jeśli 'globalny' i przypisanie są tak daleko, masz gorsze problemy z jasnością niż;) – delnan