lambda函数在给定bool函数时是否可能返回假值?
例如,此lambda函数产生True:
bool(lambda x:[])
True
只有文档中真值测试中指定的对象,以及其\uuuu bool\uuuu
或\uuuu len\uuu
方法分别返回False
或0
的对象,才是虚假对象。
其他一切(是的,这包括任何lambda
)都是真实的。
lambda只是编写函数的另一种方式。与几乎所有事物一样,它们在默认情况下都是真实的。您可以创建一个类,其实例的行为与函数一样,并且本身是错误的。它们不是lambda函数,但没有理由会有问题。
例如:
class FalseyFunction:
def __init__(self, func):
self.func = func
def __call__(self, *args, **kwargs):
return self.func(*args, **kwargs)
def __bool__(self):
return False
>>> f = FalseyFunction(lambda x:[])
>>> f(0)
[]
>>> bool(f)
False
不,您不能使用纯lambda
表达式来实现这一点。
lambda x:[]
是那种类型的
<class 'function'>
正如文件所说,没有任何类型的东西会被证明是虚假的——所以它会被证明是真实的;i、 e.将其传递给bool
将返回True
。
如果你想要一个函数(可调用函数),它的计算值为False
,我会完全按照khelwood的回答所描述的去做。
检查给定的参数是否是一个原生的布尔值。 使用 typeof 来检查一个值是否为一个布尔值。 const isBoolean = val => typeof val === 'boolean'; isBoolean(null); // false isBoolean(false); // true
问题内容: 如何检查布尔值是否为null?因此,如果我知道“ hideInNav”为空。如何阻止它进一步执行?像下面这样的东西似乎不起作用,但是为什么呢? 问题答案: 只能是或因为它是原始数据类型(+ 变量的默认值为)。如果要使用值,则可以改用类。布尔是一种引用类型,这就是您可以分配给布尔“变量”的原因。例:
因此,我想知道是否有一个利索的方法来做这件事,除了
c (当用于布尔值时) 该内建函数从 FreeMarker 2.3.20 版本开始存在 该内建函数将布尔值转换为字符串,针对 "计算机语言" 而不是用户。不管 boolean_format 的设置是什么, 结果是 "true" 或 "false"。 当生成JavaScript的时候,应该会用到它,否则修改 boolean_format 的话可以打断生成的计算机语言输出。 请注意,该内建函数 对字符
问题内容: 当我运行下面的代码时,它显示如下。为什么不是x’x’而是一个布尔值?这仅发生在传递给使用lambda调用的函数的第一个参数时。 错误y / home / me / model / some_file 问题答案: 导致该问题的原因是,传递了一个布尔值,该布尔值指示是否已被检查。适当的事情是使用参数来使用该参数:
问题内容: 嗨,在Java中这样的事情是可能的吗? 澄清。上面的作品,但首先分配false。我想要实现的是尽快将其返回并随后将其重置。 结构看起来像这样: 我当时正打算一次过 问题答案: 不,没有内置功能可以满足您的描述。您可以使用一个临时变量来完成此操作: 或者根据您对问题的 进一步 编辑( “结构看起来像这样”) ,可以使用: 我 真的,真的不会那样做 。不必要的钝。