[英]pynput keyboard listener function variable pass
我遇到了将计数变量传递给 on_press function 的问题,使用 pynput 侦听器库每次按键都会调用该变量。 我很困惑为什么变量没有被递增然后 output 到屏幕上。 它确实在第一次迭代时增加和 output 但不是在下一次迭代。 我很困惑请帮忙。
from pynput.keyboard import Listener
import string
count = 0
def on_press(count):
count += 1
print(count)
with Listener(on_press=on_press(count)) as listener:
listener.join()
这里的问题围绕变量 scope 的主题。 on_press
内部引用的count
变量是传递给 function 的count
参数(不是函数外部定义的全局变量count
)。 Python 中的整数通过复制传递给 function(不通过引用)。 因此,您的代码中发生的事情是您正在制作全局变量count
的副本,将其传递给on_press
,然后on_press
只会增加传入的count
的本地副本 - 因此它总是会打印出 1。
如果您希望每次调用 on_press 时递增 count ,则应直接递增全局 count 变量,如下所示:
from pynput.keyboard import Listener
import string
count = 0
def on_press():
global count
count += 1
print(count)
with Listener(on_press=on_press()) as listener:
listener.join()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.