如何检查变量是否是python中的代码对象

时间:2019-03-25 05:35:54

标签: python

我有此代码-

code_obj = compile("k=1", "<string>", "exec")

如何通过类型比较或使用isinstance来检查变量是否为代码对象。

3 个答案:

答案 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')

演示:https://ideone.com/bveBX3

答案 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.CodeTypetype(compile(...))用作isinstance(...)的参数。

答案 2 :(得分:0)

inspect.iscode 为代码对象返回 True

inspect.iscode((lambda: 0).__code__)