хороший дизайн программы для глобальных переменных - PullRequest
0 голосов
/ 20 марта 2020

У меня есть мастер-программа, в которой я хотел бы использовать глобальную переменную для всех других программ. Я не могу найти правильный способ сделать это (я могу думать только о слишком сложных решениях).

Так, например, я попробовал это:

#master_prgm py
from global_vars import x,update
global_vars.update(1)

#global_vars
x=0
def update(y):
   x+=y

Я думал, что x будет определен в импорт global_vars, но, по-видимому, это не так, потому что у меня есть сообщение «локальная переменная« x »перед ссылкой»

Не могли бы вы найти хороший способ?

1 Ответ

0 голосов
/ 20 марта 2020

Переменная в python - это имя в некотором пространстве имен, привязанном к объекту. Если бы я написал

x = "foo"
y = x
x = "bar"

, мы бы не ожидали, что y будет "баром". Ведь это уникальная переменная, которой объект из x.

from global_vars import x

похож. Теперь у нас есть две переменные (1) global_vars.x в пространстве имен global_vars и (2) отдельный и уникальный x в пространстве имен локального модуля. Эквивалентный импорт показывает это более драматично

from global_vars import x as a_different_x

Если вы хотите поделиться x, даже после обновления, продолжайте ссылаться на него в исходном пространстве имен

import global_vars

#global_vars
global_vars.x=0
def update(y):
   global_vars.x+=y
    print
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...