调用 if __name__ == '__main__':在一个模块中从另一个模块中的函数 [关闭]
Posted
技术标签:
【中文标题】调用 if __name__ == \'__main__\':在一个模块中从另一个模块中的函数 [关闭]【英文标题】:Calling if __name__ == '__main__': in one module from a function in another module [closed]调用 if __name__ == '__main__':在一个模块中从另一个模块中的函数 [关闭] 【发布时间】:2014-12-15 06:58:48 【问题描述】:我需要调用if __name__ == '__main__'
,它在一个模块Module 1
中调用多个类,在一个函数function1
中调用第二个模块Module 2
中的一个类。
我不能在Module 1
中使用def main()
- 解决方案而不是if __name__ == '__main__'
,因为该模块有几个类和函数连接到Module 1
中的Class_1
,仅适用于print('I am:', __name__)
和@987654332 @。
所以我的问题是如何调用 main: if __name__ == '__main__'
from Class_1()
in function1
in Class_2()
in Module 2
?
模块 1
print('I am:', __name__)
class Class_1():
....code...
# calling everything in the module that
if __name__ == '__main__':
模块 2
# if __name__ == '__main__' from Module 1 should be called in function 1
class Class_2():
.... code..
def function1:
--- calling main if __name__ == '__main__' from Module 1
【问题讨论】:
...什么?!你不能调用if __name__ == "__main__"
- 这不是一个函数。
我可以像在 main 函数中那样调用它,但是当我将 Module1 中的脚本从 if name == " 更改时遇到了很多麻烦main" 到 def main() 以便在 Class_2、Module2 中的 function1 中调用 Module1.main(),这就是我正在寻找另一个解决方案的原因。
您能否使用main
提供代码的minimal example 并准确解释它有什么问题(输入和完整回溯或预期和实际输出)?您在这里尝试的方法对您不起作用。
【参考方案1】:
if __name__...
的全部意义在于它仅用于在模块作为脚本执行时才需要的东西,即如果它没有被导入从另一个班级。所以不,你不需要这样做。
您对为什么不能将事物放入函数的解释毫无意义;这正是你应该做的。
【讨论】:
抱歉不清楚,我的目的是将Module1中的脚本导入Module2,而不是相反。 Module1 中 if name == "main" 的脚本只能在 Class_2 中的 function1 中调用,Module2 @user1749431 那么你不应该使用if __name__ == "__main__"
根本;那是在模块没有导入的时候。【参考方案2】:
if __name__ == '__main__'
主要用于使单个 python 脚本可执行。例如,您定义了一个执行某些操作的函数,通过导入并运行它来使用它,但您还希望在使用 python module1.py
运行 Python 脚本时执行该函数。
对于您提出的问题,我能想到的最好的方法是您希望在调用“module2.py”时运行“module1.py”中定义的函数。应该是这样的:
### module1.py:
def main():
# does something
...
if __name__ == '__main__':
main()
### module2.py:
from module1 import main as main_from_module_one
if __name__ == '__main__':
main_from_module_one() # calling function main defined in module1
【讨论】:
以上是关于调用 if __name__ == '__main__':在一个模块中从另一个模块中的函数 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Python if __name__ == '__main__': 理解
unittest: if __name__ == "__main__" 理解