Допустим, у меня есть следующий конфигурационный файл:Python динамический импорт и изменение переменной
config.py:
x = 2
y = x * 2
Я хотел бы импортировать этот файл в main.py , предпочтительно используя команду load_source, но я также хочу иметь возможность изменять значение x во время импорта, так что изменение в x распространяется на другие переменные в файле config.py. Например, я хочу, следующий код, печатает 6, а не 4.
main.py:
import imp
config = imp.load_source('', 'config.py')
config.x = 3
print config.y
Что такое лучший способ сделать это? Я знаю, что я могу писать функции в config.py, чтобы сделать это для меня, но я предпочитаю, чтобы конфиг был простым определением переменных.
Почему не просто импортировать конфигурации и манипулировать переменной, как это. В любом случае они глобальны –
Даже если вы импортируете его, значение y не изменится при изменении x, потому что оно определено после x, а изменение x не изменит y, если оно не определено как список или что-то – Amin
Это не так, как это работает. Python использует динамическое кастинг, когда вы говорите y = x * 2, который не является указателем. Значение даже в скрипте, где y был определен, если вы печатаете (y), тогда установите x = 1 и print (y) снова y будет одинаковым. вы можете сделать y функцией или создать класс внутри config, например, предложенный brent. –