Python pynput键盘侦听器函数变量传递
我遇到了一个问题,将count变量传递给on_press函数,该函数使用pynput侦听器库为每次按键调用。我不明白为什么变量没有递增然后输出到屏幕上。它在第一次迭代时进行增量和输出,但在下一次迭代时不进行。我很困惑,请帮忙Python pynput键盘侦听器函数变量传递,python,pynput,Python,Pynput,我遇到了一个问题,将count变量传递给on_press函数,该函数使用pynput侦听器库为每次按键调用。我不明白为什么变量没有递增然后输出到屏幕上。它在第一次迭代时进行增量和输出,但在下一次迭代时不进行。我很困惑,请帮忙 from pynput.keyboard import Listener import string count = 0 def on_press(count): count += 1 print(count) with Listener(on_pr
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()
这里的问题围绕着可变范围的主题。按时在
内部引用的count
变量是传递到函数中的count
参数(不是函数外部定义的全局变量count
)。Python中的整数通过复制传递给函数(而不是通过引用)。因此,在您的代码中发生的事情是,您正在制作一个全局变量count
的副本,在按时将其传递到,然后在按时只增加传入的count
的本地副本,因此它将始终打印出1
如果希望每次调用on_press时计数都递增,则应直接递增全局计数变量,如下所示:
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()
使用这种在函数中声明全局计数并使其递增的方法,只打印1而不打印任何其他内容的操作与以前完全相同。我也试着去摆弄它,但似乎没有什么东西能让你的脚很舒服!!!