2016-06-27 3 views
0

Я выполнение питона скрипт:Python переменной сферы и выполнение

exec(open("process.py").read(), globals()) 

Можно ли сделать все переменные, заданные в «process.py» локального для конкретного файла?

+0

Просто выполните импортный процесс? – ShadowRanger

+0

@ShadowRanger: Может быть, но если вы дважды импортируете файл, он запускает файл только один раз. Похоже, что этот 'exec' больше похож на« запустить этот файл сейчас », чем« сделать вещи, определенные в этом файле доступными ». – user2357112

+0

@ user2357112: True. Хотя, возможно, «процесс импорта», а затем запуск функции, определенной в ней, был бы более эффективным и менее смешным, чем повторение «exec»-файла. – ShadowRanger

ответ

0

Вы можете выполнить содержимое файла в новом Словаре вместо собственных глобалов этого кода в:

with open("process.py") as f: 
    exec(f.read(), {}) 

Это странно способ структурировать программу Python, хотя. Обычно вы организуете свой код в модули и функции вместо exec-файлов.

+1

или, я полагаю, 'globals(). Copy()' if 'process.py' зависит от текущих глобалов (yuck) ... Конечно, мутации объектов по-прежнему« утечки »... – mgilson

Смежные вопросы