gpt4 book ai didi

python - 如何在不带括号调用的函数中传递参数?

转载 作者:行者123 更新时间:2023-12-02 05:22:22 25 4
gpt4 key购买 nike

这是来自 pynput 的示例代码documentation 。它基本上会打印您按下的键。

from pynput import keyboard

def on_press(key):
print('You pressed {}'.format(key))

if key == keyboard.Key.esc:
return False

with keyboard.Listener(
on_press=on_press) as listener:
listener.join()

我需要将参数传递给 on_press函数,但调用时不带括号。我不明白这是为什么以及有什么作用。理想情况下,这就是我想要做的工作:

from pynput import keyboard

def on_press(key, addition):
print('You pressed {}, {}'.format(key, addition))

if key == keyboard.Key.esc:
return False

string = 'congrats!'

with keyboard.Listener(
on_press=on_press(key, string)) as listener:
listener.join()

最佳答案

with keyboard.Listener(on_press=on_press) as listener:

这实际上并没有调用on_press,而是将其传递给keyboard.Listener。 (Python 函数是一流的,即它们可以传递。)然后 Listener 对象稍后会调用它。这称为 callback .

您可以使用高阶函数来设置加法:

def outer(addition):
def on_press(key):
print('You pressed {}, {}'.format(key, addition))
...
return on_press

with keyboard.Listener(on_press=outer('congrats!')) as listener:
listener.join()

部分也可以正常工作。

关于python - 如何在不带括号调用的函数中传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59815965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com