1

我有这段代码:

import code

interpreter = code.InteractiveInterpreter()
myCode = code.compile_command('if True: print("IT\'S TRUE!!")')
interpreter.runcode(myCode)

InteractiveInterpreter.runcode()我想知道,和正常功能有什么区别exec()?上面的代码不起作用,但这个代码:

exec("if True: print('IT\'S TRUE!!')")
4

1 回答 1

1
>>> import code
>>> 
>>> interpreter = code.InteractiveInterpreter()
>>> myCode = code.compile_command('if True: print("IT\'S ONE!!")')
>>> interpreter.runcode(myCode)
TypeError: exec: arg 1 must be a string, file, or code object

很明显,interpreter.runcode接受字符串或代码。

但是myCode没有。

>>> myCode
>>> 

根据code.compile_command文件

... 如果命令完整且有效,则返回一个代码对象(与 compile(source, filename, symbol) 相同);如果命令不完整,则无;如果命令完整并包含语法错误,则引发 SyntaxError,如果命令包含无效文字,则引发 OverflowError 或 ValueError。

如果您将字符串传递给interpreter.runcode,它可以工作。

>>> interpreter.runcode('if True: print("IT\'S ONE!!")')
IT'S ONE!!
于 2013-10-11T03:00:00.797 回答