0

很多时候,我们在某些用户定义的函数中遇到错误并想要对其进行调试。如果错误发生在主程序中,我们可以使用-i标志来保存错误后的变量。但是如果错误发生在用户定义的函数中,我们就无法访问函数的局部变量。有没有一种方法可以让我们通过 python 代码打开 python 解释器,接受来自的代码stdin并将输出打印到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
4

2 回答 2

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 代码中。

于 2017-07-07T06:58:46.497 回答
-1

您不能在函数外部使用函数的局部变量。

如果可以在函数外使用变量,则需要通过使用 GLOBAL将其声明为全局变量。

于 2017-07-06T15:42:24.973 回答