Для кода, реализованного в Python (в отличие от расширений C), если вы используете ipython
, простой способ увидеть исходный код - использовать оператор ??
.Например, в моей версии 3.6:
In [1]: import asyncio
In [2]: asyncio.sleep??
Signature: asyncio.sleep(delay, result=None, *, loop=None)
Source:
@coroutine
def sleep(delay, result=None, *, loop=None):
"""Coroutine that completes after a given time (in seconds)."""
if delay == 0:
yield
return result
if loop is None:
loop = events.get_event_loop()
future = loop.create_future()
h = future._loop.call_later(delay,
futures._set_result_unless_cancelled,
future, result)
try:
return (yield from future)
finally:
h.cancel()
File: c:\program files\python36\lib\asyncio\tasks.py
Type: function
Вы также можете просто посмотреть репозиторий CPython GitHub , но в зависимости от организации кода может быть неочевидно, где искать (например,в этом случае код фактически существует в asyncio.tasks
и автоматически импортируется в asyncio
), в то время как ipython
magic находит его непосредственно для вас.