我有此代码-
code_obj = compile("k=1", "<string>", "exec")
如何通过类型比较或使用isinstance来检查变量是否为代码对象。
答案 0 :(得分:2)
您可以检查对象是否为types.CodeType
的实例:
import types
code_obj = compile("k=1", "<string>", "exec")
if isinstance(code_obj, types.CodeType):
print('code_obj is a code object')
答案 1 :(得分:0)
@blhsing的答案很好用,但是如果您不想导入任何新内容,则以下操作完全相同。
code_obj = compile("k=1", "<string>", "exec")
code_class = type(compile("", "<string>", "exec"))
if isinstance(code_obj, code_class):
print("code_obj is a code object")
要真正确定他们做的是同一件事,
>>> import types
>>> code_class = type(compile("", "<string>", "exec"))
>>> print(types.CodeType, code_class)
True
因此,您可以将types.CodeType
或type(compile(...))
用作isinstance(...)
的参数。
答案 2 :(得分:0)
inspect.iscode
为代码对象返回 True
。
inspect.iscode((lambda: 0).__code__)