首先非常感谢大佬的解答。
我看了大佬推荐的帖子,主要讲解了handler(event)实现了什么功能。
我这里的疑问主要是从语法上怎么理解handler(event)?
[handler(event) for handler in self.handlers[event.type_]]
这个写法是列表解析的写法,好像是3.7版本以后引入的。(也可能是更早的版本)
但是最原始的写法应该是
for handler in self.handlers[event.type_]:
handler(event)
for语句就很常规,没有疑问。
但是handler(event) 这个语法上怎么理解?因为handler()不是自定义函数,不是内置函数,也不是关键字。
我在源代码中找不到哪里定义了handler()???
只有在 register函数中有handler。如下:
def register(self, type: str, handler: HandlerType) -> None:
"""
Register a new handler function for a specific event type. Every
function can only be registered once for each event type.
"""
handler_list = self._handlers[type]
if handler not in handler_list:
handler_list.append(handler)
但是register函数中的handler 只是一个形参,或者说是一个临时变量。
那么 在def _process(self, event: Event) -> None:函数中
[handler(event) for handler in self._handlers[event.type]]
handler(event) 它不是函数,handler()也找不到定义,
如果你写一个put(event)(我们先不研究功能对不对),我从语法上可以理解,put是一个函数。
但是handler(event) 我主要是从语法上搞不明白,为啥handler(event)这样写?它能动作,能执行吗?找不到定义
从python的原始语法上找不到类似的写法和说明?
这也是为啥我说问题可能比较低级,各位不要笑话。