Если у вас есть файлы
file1.py
def foo(arg1, arg2):
pass
if __name__ == "__main__":
arg1 = 1
arg2 = 2
foo(arg1, arg2)
и file2.py
находятся в том же каталоге, в котором вы можете:
file2.py
from file1 import foo
arg1 = 1
arg2 = 2
foo(arg1, arg2)
Вам нужно будет переопределить arg1
и arg2
, как у вас, но тогда нужно просто импортировать нужную вам функцию. Это даст вам функцию, но не глобальные переменные file1.py
, потому что они защищены оператором if __name__ == "__main__"
UPDATE
Если вы не хотите переназначать в file2.py
, вы можете сделать что-то вроде этого:
file1.py
def foo(arg1, arg2):
pass
def new_function(): #make a new function that you can import
arg1 = 1
arg2 = 2
foo(arg1, arg2)
if __name__ == "__main__":
new_function()
file2.py
from file1 import new_function
new_function()
Это не самое худшее, потому что вы по-прежнему храните arg1
и arg2
в качестве локальных переменных, поэтому нет большой проблемы с пространством имен, но теперь вы можете импортировать их, поскольку они не защищены в разделе if name == main
ваш код.