我有这段代码:
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!!')")
答案 0 :(得分: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
documentation:
... 返回一个代码对象(与compile(source,filename,symbol)相同) 如果命令完整有效;如果命令是无 不完整的强>;如果命令完整且包含,则引发SyntaxError 语法错误,或者如果命令引发OverflowError或ValueError 包含无效的文字。
如果您将字符串传递给interpreter.runcode
,则可以正常工作。
>>> interpreter.runcode('if True: print("IT\'S ONE!!")')
IT'S ONE!!