我有一些使用Python 3.4的asyncio使用的简单代码call_later.代码应该打印,等待10秒,然后再次打印(但是应该TypeError在end()应该被激活时加注,见下文):
import asyncio
@asyncio.coroutine
def begin():
print("Starting to wait.")
asyncio.get_event_loop().call_later(10, end())
@asyncio.coroutine
def end():
print("completed")
if __name__ == "__main__":
try:
loop = asyncio.get_event_loop()
loop.create_task(begin())
loop.run_forever()
except KeyboardInterrupt:
print("Goodbye!")
Run Code Online (Sandbox Code Playgroud)
给出错误:
Exception in callback <generator object coro at 0x7fc88eeaddc8>()
handle: <TimerHandle when=31677.188005054 <generator object coro at 0x7fc88eeaddc8>()>
Traceback (most recent call last):
File "/usr/lib64/python3.4/asyncio/events.py", line 119, in _run
self._callback(*self._args)
TypeError: 'generator' object is not callable
Run Code Online (Sandbox Code Playgroud)
从我从文档中可以看出(https://docs.python.org/3/library/asyncio-task.html#coroutine),call_later获取一个协程对象,它通过调用协程函数获得.这似乎是我所做的,但asyncio没有end()正确调用.
应该怎么做?
在 Python 3 中,模块可以是没有命名空间模块__init__.py(根据PEP 420)或作为常规模块(即“[modules] 包,因为它们在 Python 3.2 及更早版本中实现” - PEP 420)具有一个__init__.py或 是单个.py文件。
如何区分命名空间模块和“普通”模块?
(我使用的是 Python 3.5.3)
例如命名空间模块命名mod打印为:
(Pdb) mod
<module 'mymodule' (namespace)>
Run Code Online (Sandbox Code Playgroud)
和普通模块打印为:
(Pdb) mod
<module 'mymodule' from '/path/to/mymodule/__init__.py'>
Run Code Online (Sandbox Code Playgroud) 我正在尝试将网站转换为电子书,并且在每个页面的开头都有大量的html我要删除.正如您可以想象的那样,Q由于大块中的某些内容未正确转义,因此使用不匹配的结果.当我尝试解决问题时,我得到堆栈溢出.
我真正需要的是一种在没有正则表达式的情况下以正常的M-%方式查找和替换dired的方法.这可能吗?
我正在尝试编写一个小宏,它从具有4列的ASCII文件中读取数据.但是我想仅将第二列的第二列绘制为(x,y).