繁体   English   中英

pynput 键盘监听器 function 变量传递

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM