我是python的新手,我分析了一些代码片段来了解我已经走了多远,来检查我是否错过了python的一些关键概念,我被困在这里(键盘记录程序的一部分)。你知道吗
def OnKeyboardEvent(event):
#statements...
return True
hookMgr = pyHook.HookManager()
hookMgr.KeyDown = OnKeyboardEvent # stuck here!
OnKeyboardEvent是函数的标识符,对吗?要调用函数,我们应该这样做:
hookMgr.KeyDown = OnKeyboardEvent(some_argument)
我的问题是为什么没有使用括号和参数?这是我不知道的另一个概念吗?你知道吗
我甚至试着分析发生了什么:
def foo(var):
return True
ires = foo
if ires == True:
print 'done'
它是印刷的没什么。所以呢这是否意味着标识符'foo'作为函数和'foo'作为变量是不同的?你知道吗
是的,
OnKeyboardEvent
是对函数本身的引用,而OnKeyboardEvent()
是对调用函数的结果的引用。hookMgr.KeyDown = OnKeyboardEvent
将hookMgr.KeyDown
连接到给定函数,类似于tkinter.Button(command=myfunction)
将函数(而不是函数调用返回的值)连接到Tkinter按钮的方式。你知道吗我将向您展示一些示例,我相信这些示例将帮助您理解Python的特性。你知道吗
就这样。你可以传递某个函数作为另一个函数的参数,或者把它存储在某个变量中然后调用它等等。这确实很有用,但有点不寻常。你知道吗
顺便说一句,我最喜欢使用这个特性:用dictionary代替(missing)
switch .. case
操作符。像这样:python的一个优点是函数和类本身就是对象,因此可以作为变量传递。例如,将另一个函数作为参数的函数可以是
在其中,您可以调用它并输入任何函数的名称,它将调用您输入的函数而不带任何参数。这通常在事件处理程序模型中使用,在该模型中,您将向对象传递对函数的引用,当事件发生时,对象将调用您的函数,这就是在被调用对象中发生的情况。你知道吗
相关问题 更多 >
编程相关推荐