2 回答
TA贡献1719条经验 获得超6个赞
好吧,我不是这方面的专家,但是如何将您的重定向if __name__ == "__main__": 到另一个函数并从您的另一个文件中调用该函数?
文件 1:
def main_file1:
arg1 = 1
arg2 = 2
foo(arg1, arg2)
if __name__ == "__main__":
main_file1()
文件2:
from file1 import *
def somefunc():
main_file1()
但是,我不确定您为什么要这样做。通常,您的整个项目中只有 1 个主要功能来使事情顺利进行并从那里调用其他功能。
最终这种失败的文件的主要功能的目的
TA贡献1773条经验 获得超3个赞
如果你有文件
文件1.py
def foo(arg1, arg2):
pass
if __name__ == "__main__":
arg1 = 1
arg2 = 2
foo(arg1, arg2)
并且file2.py在同一目录中,您可以:
文件2.py
from file1 import foo
arg1 = 1
arg2 = 2
foo(arg1, arg2)
您将需要重新定义arg1并arg2像您一样,但这只是导入您想要的功能的问题。这将为您提供函数,但没有任何全局变量,file1.py因为它们受if __name__ == "__main__"语句保护
更新
如果您不想在内部重新分配,则file2.py可以执行以下操作:
文件1.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()
文件2.py
from file1 import new_function
new_function()
这还不是最糟糕的,因为您仍然包含arg1和arg2作为局部变量,所以没有巨大的命名空间问题,但现在您可以导入它们,因为它们在if name == main您的代码部分中不受保护。
添加回答
举报