簡體   English   中英

Python的代碼object是什么類型的?

[英]What is the type of Python's code object?

有沒有辦法可以將compile__code__構造的代碼 object 的類型與實際代碼 object 類型進行比較?

這工作正常:

>>> code_obj = compile("print('foo')", '<string>', 'exec')
>>> code_obj
<code object <module> at 0x7fb038c1ab70, file "<string>", line 1>
>>> print(type(code_obj))
code
>>> def foo(): return None
>>> type(foo.__code__) == type(code_obj)
True

但我不能這樣做:

>>> type(foo.__code__) == code
NameError: name 'code' is not defined

但是我從哪里導入code

它似乎不是來自code.py 它在 CPython C文件中定義,但我找不到它的Python接口類型。

您正在尋找可以在types中找到的CodeType

>>> from types import CodeType
>>> def foo(): pass
... 
>>> type(foo.__code__) == CodeType
True

請注意,它沒有什么特別之處,它只是在函數__code__上使用type

由於它在標准庫中,因此即使代碼對象的公開方式發生一些變化,您也可以確定它會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM