Python - 在使用导入时无法在终端中运行相同脚本两次

0 投票
3 回答
2005 浏览
提问于 2025-04-18 13:18

我正在处理一个叫做 test.py 的Python脚本。我想对它进行一些修改,然后重新运行。现在我在OSX的终端上运行这个脚本,但我发现每次想要第二次运行脚本时,都必须退出终端再重新打开。

# test.py
print "Howdy"

终端窗口:

$ python
>>> import test
Howdy
>>> import test
>>>

问题 1:我该如何让脚本再次运行?

问题 2:或者说,Python就是这样设计的吗:

# test.py
def printStuff():
    print "Howdy"

终端:

$ python
>>> import test
>>> test.printStuff()
Howdy
>>> test.printStuff()
Howdy
>>> 

3 个回答

1
1

你想要使用 reload 方法

>>> import test
Howdy
>>> reload(test)
Howdy
3

1: 你可以用 reload(moduleName) 来实现你想做的事情(但下面还有一些注意事项)。

2: 有几种不同的写法,但我通常会在我的每个模块里放一个 main() 函数,这样就有了一个明确的“起点”,或者我会只放一些库函数。所以你在例子里想的差不多。一般来说,导入模块的时候不应该“做事情”,除非是为了设置模块。可以把模块想象成一个库,而不是一个脚本。

如果你想把它当作脚本来执行(在这种情况下你就不应该使用 import),那么有几种选择。你可以在你的 Python 脚本顶部加一个 shebang(我应该在 Python 脚本中加 #!(shebang)吗?应该是什么样的格式?),然后直接从命令行执行,或者你可以在脚本中使用 __main__ 模块作为入口点(https://docs.python.org/2/library/main.html),然后用命令行调用这个脚本,比如 python myscript

撰写回答