我做了几个布尔比较:
>>> (True or False) is True
True
>>> (True or False) == True
True
听起来像布尔值,==
并且is
可以互换。
有时候使用起来更清晰 is
我想知道:
是True
和False
python中预分配?
是bool(var)
始终返回相同的True
(或者False
与预先分配)True
(或False
)?
它是安全的替代==
与is
比较布尔值?
这与最佳实践无关。
我只想知道真相。
您可能永远不需要比较布尔值。如果您正在执行以下操作:
if some_bool == True:
...
…只需将其更改为:
if some_bool:
...
没有is
或==
需要。
正如评论者所指出的,有比较布尔值的正当理由。如果两个布尔值都未知,并且您想知道一个布尔值是否等于另一个布尔值,则应使用==
或!=
而不是is
或is not
(原因说明如下)。请注意,这在逻辑上分别与xnor
和等效,xor
在Python中它们不作为逻辑运算符存在。
在内部,应该永远只能是两个布尔字面对象(另见C
API
),并且bool(x) is True
应该是True
,如果bool(x) == True
任何Python程序。两个警告:
x is True
,如果x == True
,但是(例如x = 1
)。==
是比较可靠的比较。因此,我想知道是否有一个利索的方法来做这件事,除了
问题内容: 以这个为例(摘自Java regexchecker不起作用): 是否用于检查的值是否重要? 我知道有这是颇为相似。但是,很明显,这个问题只针对原始对象,而不是对象包装器;因此,将不适用。 另外,应该以不同于其他的方式对待? 问题答案: 从您的评论看来,您正在寻找使用包装器类的“最佳实践” 。但是实际上 并没有 最佳实践,因为使用此类开始是一个坏主意。使用对象包装的唯一原因是在您绝对 必
检查给定的参数是否是一个原生的布尔值。 使用 typeof 来检查一个值是否为一个布尔值。 const isBoolean = val => typeof val === 'boolean'; isBoolean(null); // false isBoolean(false); // true
问题内容: 我将有一个像 该字符串将能够具有所需的任意多个“ AND”组。AND组内将没有任何嵌套组。所有组将始终由OR分隔。 我可以只切换AND 和AND 。 我想要将此字符串传递到某种类型的eval方法中,并输出TRUE或FALSE。 有什么可以做到的吗? 问题答案: 您可以使用JDK1.6随附的内置Javascript引擎来评估包含数学表达式的字符串。 您可以在这里查找:ScriptEngi
为什么与有不同的 ? 我正在使用Drools DSL,我必须实现一个规则: 我有这些DSL定义: 要求是以肯定的方式编写可重用的DSL语句,并具有否定它们的能力。
问题内容: 我总是成功地对数组进行如下排序(当我不希望使用标准字典顺序时): 现在,有人告诉我这是错误的,我需要代替。是真的,如果是,为什么呢?我已经测试了比较功能,并且可以正常工作!此外,为什么我的解决方案错了会如此普遍? 问题答案: 我总是这样成功地排序我的数组 不,你没有。并没有注意到它。一个简单的反例: 为什么? 因为即使大于,比较函数也确实会返回(或等效地)。但是暗示着这两个元素被认为是