能在 await 表示式中使用的物件。可以是 coroutine 或是具有__await__()
方法的物件。參見 pep 492。
注意可等待物件有兩種:
下面這段**就是 awaitable 抽象基類:
class
awaitable
(metaclass=abcmeta)
: __slots__ =()
@abstractmethod
def__await__
(self)
:# 必須返回乙個 iterator
yield
@classmethod
def__subclasshook__
(cls, c)
:if cls is awaitable:
return _check_methods(c,
"__await__"
)return notimplemented
用async def
復合語句建立的函式,它返回的是乙個coroutine物件,而剛好coroutine繼承於awaitable
在asyncio
包中有個函式,接受乙個awaitable
, 通過yield from awaitable.__await__()
來**訪問可等待物件的__await__
方法返回的可迭代物件。
# asyncio.tasks.py
@coroutine
def_wrap_awaitable
(awaitable)
:"""helper for asyncio.ensure_future().
wraps awaitable (an object with __await__) into a coroutine
"""return
(yield
from awaitable.__await__(
))
可等待計時器
該核心物件類似於計時器。當然,它和使用者模式下的計時器是有區別的。使用createwaitabletimer函式可以建立乙個可等待計時器核心物件。用setwaitabletimer函式來對可等待計時器核心物件進行設定。另外可等待計時器核心物件還可以以非同步 asynchronous 方式呼叫函式 a...
可迭代物件
可迭代物件 1.生成器 2.元組 列表 集合 字典 字串 如果判斷乙個物件可迭代?from collections import iterable list1 1,2,3,4,5,6,7,8,9 c isinstance list1,iterable print c 迭代是訪問結合元素的一種方式。迭...
可迭代物件
目錄一 可迭代物件 1.什麼是迭代器?迭代取值的工具 2.什麼是迭代?迭代既更新換代 每次的更新都必須依賴於上一次的結果 3.可迭代物件內建有 iter 方式的都稱之為可迭代物件 內建的意思是可以通過點的方式直接檢視到的 針對雙下劃線開頭 雙下劃線結尾的方式 最為專業標準的讀法為 雙下方法名 物件導...