在我发布之前,我试图寻找答案,但我在措辞方面遇到了麻烦。所以,如果网站上有重复的问题,我道歉。
我有一个Commend Line python脚本(在本例中我们称之为脚本1),它从另一个脚本调用一个函数(我们称之为脚本2)。我是这样做的:
import Script2
Script2.Some_Function()
Some_Function可以执行各种操作,例如连接到Internet上的服务器以及执行文件查找。通常,如果其中一个任务失败,它会在屏幕上显示错误信息:
def Some_Function():
def error(err):
print "Error: " + err
然而,当我知道应该打印错误时,我没有看到任何在屏幕上打印的内容。我怀疑这是因为我从脚本1中调用它。 有什么我能做的吗?我真的需要打印脚本2的输出。
答案 0 :(得分:1)
如果您的代码与您的代码段完全相同,那么它可能不会起作用,但首先,让我们使用正确的措辞,在python中使用术语module
来命名另一个包含您想要的符号的python文件导入当前(module
)。
脚本通常是您从命令行界面运行的高级语言的一小段代码。因此,根据经验,python中的脚本是您放置if __name__ == '__main__':
所以我正在重命名你的例子:
<强> myscript.py 强>:
import external_module
external_module.some_function()
<强> external_module 强>:
def some_function():
def error(err):
print "Error: " + err
然而,当我知道应该打印错误时,我没有看到任何在屏幕上打印的内容。我怀疑这是因为我从脚本1中调用它。有什么我可以做的吗?我真的需要打印脚本2的输出。
现在代码被“清理”了一下,当你运行你的程序时发生了什么?
python myscript.py
好吧,没什么,这是可以预料的:因为你什么也没做!让我们添加评论:
<强> myscript.py 强>:
import external_module # you import the module external_module
external_module.some_function() # you run the function some_function()
# from external_module
在myscript中没有什么是错的。但你的问题在于external_module:
<强> external_module 强>:
def some_function(): # you declare the function some_function
def error(err): # you declare the function error
# that lives only in some_function() scope
print "Error: " + err # in error() you print something out!
所以,当你执行external_module.some_function()
时,你只需声明函数error()
而你永远不会运行它,这意味着你永远不会运行print
语句。如果您忘记import
方面,只能在python REPL中执行:
>>> def foo():
... def bar():
... print("Hello world?")
...
>>> foo()
>>>
它什么都没做!但如果你这样做:
>>> def foo():
... def bar():
... print("Hello World!")
... bar() # here you call the function bar() inside foo()
...
>>> foo()
Hello World!
>>>
你可以运行bar()
!
我希望我的解释足够详尽!
HTH