Я выполнение питона скрипт:Python переменной сферы и выполнение
exec(open("process.py").read(), globals())
Можно ли сделать все переменные, заданные в «process.py» локального для конкретного файла?
Я выполнение питона скрипт:Python переменной сферы и выполнение
exec(open("process.py").read(), globals())
Можно ли сделать все переменные, заданные в «process.py» локального для конкретного файла?
Вы можете выполнить содержимое файла в новом Словаре вместо собственных глобалов этого кода в:
with open("process.py") as f:
exec(f.read(), {})
Это странно способ структурировать программу Python, хотя. Обычно вы организуете свой код в модули и функции вместо exec
-файлов.
или, я полагаю, 'globals(). Copy()' if 'process.py' зависит от текущих глобалов (yuck) ... Конечно, мутации объектов по-прежнему« утечки »... – mgilson
Просто выполните импортный процесс? – ShadowRanger
@ShadowRanger: Может быть, но если вы дважды импортируете файл, он запускает файл только один раз. Похоже, что этот 'exec' больше похож на« запустить этот файл сейчас », чем« сделать вещи, определенные в этом файле доступными ». – user2357112
@ user2357112: True. Хотя, возможно, «процесс импорта», а затем запуск функции, определенной в ней, был бы более эффективным и менее смешным, чем повторение «exec»-файла. – ShadowRanger