gpt4 book ai didi

python - 有没有办法在不传递参数的情况下调用函数?

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:11 27 4
gpt4 key购买 nike

我是信息安全方面的新手,我正在尝试自学如何使用 Python 构建一个简单的键盘记录器,我在一个站点中找到了这段代码:

import pythoncom, pyHook

def OnKeyboardEvent(event):
print 'MessageName:',event.MessageName
print 'Message:',event.Message
print 'Time:',event.Time
print 'Window:',event.Window
print 'WindowName:',event.WindowName
print 'Ascii:', event.Ascii, chr(event.Ascii)
print 'Key:', event.Key
print 'KeyID:', event.KeyID
print 'ScanCode:', event.ScanCode
print 'Extended:', event.Extended
print 'Injected:', event.Injected
print 'Alt', event.Alt
print 'Transition', event.Transition
print '---'

# return True to pass the event to other handlers
return True

# create a hook manager
hm = pyHook.HookManager()
# watch for all mouse events
hm.KeyDown = OnKeyboardEvent
# set the hook
hm.HookKeyboard()
# wait forever
pythoncom.PumpMessages()

当我试图理解这段代码时,我发现了函数“OnKeyboardEvent”的调用而没有给出它的参数

hm.KeyDown = OnKeyboardEvent

所以我的问题是:在 python 中有没有一种方法可以在不给它参数的情况下调用函数?

最佳答案

在 python 中,函数名相当于存储函数的变量。换句话说:您可以定义一个名为 foo 的函数,并在第二个变量 bar 中存储/引用它:

def foo():
print("foo!")

bar = foo

bar() # prints: foo!

在您的例子中,您只定义了函数 OnKeyboardEvent(event) 并将它的引用保存在 hm.KeyDown

函数的调用仅在您按下键盘键时发生,并且在 hm 中从事件处理程序内部调用。然后事件处理程序将事件对象传递给函数。

回答你关于调用没有参数的函数的问题。可以设置所有参数的默认值的函数例如:

def foo(bar = "default string"):
print(bar)

print(foo()) # prints: default string
print(foo("hello world!")) # prints: hello world!

关于python - 有没有办法在不传递参数的情况下调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45394647/

27 4 0
文章推荐: c - 重新分配不工作
文章推荐: css - 蓝图
文章推荐: c - Bit Twiddling - 对该程序的输出感到困惑
文章推荐: css - CSS 中的伪类
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com