如何创建返回“True”的匿名函数?

2024-04-28 14:33:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些代码,只有当一个特定的硬件设备连接运行。调试时我想放弃这个限制。你知道吗

为此,我尝试用一个只返回True的匿名函数临时替换检查硬件是否已连接的函数:

import drm

def OnStartButton(self, evt):
    # Don't check for dongle in debug mode.
    if Globals.DEBUG:
        # Store the original function so we can reassign it later.
        func_store = drm.is_dongle_attached
        drm.is_dongle_attached = lambda x: return True
    if drm.is_dongle_attached():
        do_some_stuff()
    if Globals.DEBUG:
        # Reassign function back to the original.
        drm.is_dongle_attached = func_store

然而,这似乎不是一个合法的概念,因为我在网上看到一个SyntaxError

drm.is_dongle_attached = lambda x: return True
                                        ^

Tags: thestore函数debugtrueif硬件is
2条回答

还有

drm.is_dongle_attached := func_store

drm.is_dongle_attached = func_store

不能在lambda函数中使用return语句。实际上,你只能在其中使用表达式。所以,就这么做吧

lambda x: True

引用official documentation

functions created with lambda expressions cannot contain statements.


实际上,在您的例子中,调用is_dongle_attached时没有任何参数。因此,需要定义lambda函数而不带参数,如下所示

drm.is_dongle_attached = lambda: True

相关问题 更多 >