很多时候我们在某些用户定义的函数中遇到错误并希望对其进行调试。如果错误发生在主程序中,我们可以使用stdin
标志在错误发生后保留变量。但是如果错误发生在用户定义的函数中,我们就无法访问函数的局部变量。有没有办法我们可以通过python代码打开python解释器,接受来自stdout
的代码并将输出打印到def foo():
x = 'Inside foo()'
run_interpreter() # Pauses for input
foo()
。这样的事情: -
stdin
我们应该能够通过print(x) # prints 'Inside foo()'
exit() # exits interpreter and resumes other code
提供以下输入: -
+
答案 0 :(得分:0)
我发现了一种简单的方法。我不知道是否有更好的方法: -
import sys
def interpreter(vars):
s = sys.stdin.readline().strip('\n')
while s!= 'exit()':
exec(s, globals(), vars)
s = sys.stdin.readline().strip('\n')
我正在使用sys.stdin
来读取空间要正确解析的语句。但是,这并未提供解释器的所有功能。我们无法使用箭头键浏览历史记录。
这在调试中非常有用。每当我收到错误消息时,我会在该行之前调用interpreter(locals())
来调查原因。我将它保存为一个崇高的片段,以便可以轻松添加到任何python代码中。
答案 1 :(得分:-1)
您不能在函数外部使用函数的局部变量。
如果您可以在函数外使用变量,则需要使用GLOBAL将其声明为全局变量。