为什么python3 inspect.isawaitable返回256?

时间:2016-12-28 08:04:10

标签: python-3.5

python

如图所示。 256这里是什么意思,为什么不返回True?谢谢你的帮助 !

1 个答案:

答案 0 :(得分:0)

你应该把它当作一个" truthy"值。它实际上是一个CPython的实现细节,您可能不应该关注它。只是做:

if inspect.isawaitable(coro):

如果你想知道,这里是来自inspect.py:

的所述函数的实现
def isawaitable(object):
"""Return true is object can be passed to an ``await`` expression."""
return (isinstance(object, types.CoroutineType) or
        isinstance(object, types.GeneratorType) and
            object.gi_code.co_flags & CO_ITERABLE_COROUTINE or
        isinstance(object, collections.abc.Awaitable))

负责返回值的部分是

object.gi_code.co_flags & CO_ITERABLE_COROUTINE 

实际上评估为256(2 ^ 8)。