我有一个用作计算器的python程序。我决定学习如何将它导入其他程序,所以我补充说:
if __name__ == "__main__":
main()
我已尝试多次导入我的模块,它所做的只是在编辑器上只使用import语句运行main函数。我所做的只是输入计算器,它只运行它。我不太确定if name 语句是如何做的,如果有人也会详细说明它如何帮助导入我的程序,那就太棒了。
答案 0 :(得分:1)
if __name__ == "__main__": main()
条件检查您是否通过python解释器运行脚本并调用main()
函数。有关更详细的说明,请参阅此问题What does if name == “main”: do?
如果你有这样的程序
# script.py
def hello_world():
print "Hello World!"
hello_world()
if __name__ == "__main__":
main()
无论您是导入Hello World!
还是从script.py
等命令行运行它都会打印 python script.py
,因为在两个实例中都会执行函数hello_world()
。
案例1:从命令行运行
$ python script.py
Hello World!
Traceback (most recent call last):
File "/path/to/tests/script.py", line 8, in <module>
main()
NameError: name 'main' is not defined
案例2:导入为模块
>>> import script
Hello World!
如果你想阻止它被打印,那么将代码的执行部分包装在main函数中,如下所示:
def hello_world():
print "Hello World!"
def main():
hello_world()
if __name__ == "__main__":
main()
现在,hello_world()
仅在您将其作为脚本运行时才被调用(或Hello World!
被打印),而不是在将其作为模块导入时。
答案 1 :(得分:0)
see here有关if __name__ == "__main__"
的更多信息,但快速摘录
在执行代码之前,它将定义一些特殊变量。例如,如果python解释器将该模块(源文件)作为主程序运行,则它将特殊
__name__
变量设置为值"__main__"
。如果从其他模块导入此文件,则__name__
将设置为模块的名称。
因此,if __name__ == "__main__"
块中包含的任何代码只有在您调用python mymodule.py
时才会运行。如果您拨打python importsmymodule.py
,它将无法运行。
至于你的具体问题,没有看到计算器模块的代码,这是不可能的,但是你的脚本中的某些调用计算器启动似乎是不言而喻的。