标签: truthiness

空集的真值

我有兴趣在Python的真值设置像{'a', 'b'},或空集set()(这是不一样的空字典{}).我特别想知道是否bool(my_set)False当且仅当设定my_set为空.

忽略原语(如数字)以及用户定义的类型,https://docs.python.org/3/library/stdtypes.html#truth表示:

以下值被视为false:

  • [...]
  • 任何空序列,例如'',(),[].
  • 例如,任何空映射{}.
  • [...]

所有其他值都被认为是真实的

https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range,一组是不是一个序列(它是无序的,它的元素没有索引,等等. ):

有三种基本序列类型:列表,元组和范围对象.

而且,根据https://docs.python.org/3/library/stdtypes.html#mapping-types-dict,

目前只有一种标准的映射类型,即字典.

所以,据我所知,set类型不是一种类型False.但是,当我尝试时,bool(set())评估为False.

问题:

  • 这是文档问题,还是我出错?
  • 空集是真实值的唯一集合False吗?

python set truthiness

41
推荐指数
3
解决办法
3282
查看次数

Perl 6如何评估真实性?

在阅读有关Perl 6的内容时,我看到一个被大肆宣扬的功能,您不再需要这样做:

return "0 but true";
Run Code Online (Sandbox Code Playgroud)

...但可以改为:

return 0 but True;
Run Code Online (Sandbox Code Playgroud)

如果是这样的话,Perl 6中的真相如何运作?在Perl 5中,它很简单:0,""和undef都是假的,其他一切都是真的.

在布尔上下文中,Perl 6中有哪些规则?

perl6 truthiness raku

26
推荐指数
5
解决办法
1049
查看次数

为什么{} == false会抛出异常?

在IE和Chrome中,在JavaScript控制台中输入此内容会引发异常:

{} == false   // "SyntaxError: Unexpected token =="
Run Code Online (Sandbox Code Playgroud)

但是,所有这些语句的评估都没有问题:

false == {}   // false

({} == false) // false

var a = {};
a == false    // false
Run Code Online (Sandbox Code Playgroud)

这是故意的行为吗?为什么会这样?

javascript exception truthiness

23
推荐指数
1
解决办法
562
查看次数

具有一个falsey元素的numpy数组的真值似乎取决于dtype

import numpy as np
a = np.array([0])
b = np.array([None])
c = np.array([''])
d = np.array([' '])
Run Code Online (Sandbox Code Playgroud)

为什么我们应该有这种不一致性:

>>> bool(a)
False
>>> bool(b)
False
>>> bool(c)
True
>>> bool(d)
False
Run Code Online (Sandbox Code Playgroud)

python arrays types numpy truthiness

21
推荐指数
2
解决办法
509
查看次数

在ruby中,对于以问号结尾的方法名称,是否是真实的惯用语?

带有问号的方法返回一些真实的东西(例如,一个数字)以表明某些东西是真的,或者true本身应该返回它是否正常?

例如,Ruby标准库或Rails中是否有使用真实性的例子?

背景:有人String#int?回答一个单独的问题时编写了一个方法,该问题返回一个表示true的整数,并nil表示false.另一位用户对没有返回布尔值感到惊讶.

ruby idioms truthiness

12
推荐指数
2
解决办法
727
查看次数

是!! 检查if语句中的truthy值的最佳实践

在angular.js中,有一些代码片段用于!!检查某个值是否在条件中是真实的.

这是最佳做法吗?我完全理解返回值或其他任务!! 用于确保类型为布尔值.但条件检查也是如此吗?

if (!!value) {
  element[name] = true;
  element.setAttribute(name, lowercasedName);
} else {
  element[name] = false;
  element.removeAttribute(lowercasedName);
}
Run Code Online (Sandbox Code Playgroud)

javascript truthiness angularjs

12
推荐指数
2
解决办法
8996
查看次数

Perl 6中的真假值是什么?

尽管总是可以使用mixins或方法重写来修改Bool强制,但是默认情况下哪些值被认为是真实的而哪些值被认为是虚假的?

注意:这个问题之前曾被问过,但不幸的是它太旧了,其内容已完全过时,而现代Perl 6则毫无用处。

perl6 truthiness raku

12
推荐指数
2
解决办法
122
查看次数

为什么... = = True在Python 3中返回False?

我正在学习python,但是我对以下结果感到有些困惑.

In [41]: 1 == True
Out[41]: True

In [42]: if(1):
    ...:     print('111')
    ...:     
111

In [43]: ... == True
Out[43]: False <===== why this is False while '1 == True' is True in previous sample

In [44]: if (...): <==== here ... just behaves like True
    ...:     print('...')
    ...:     
...
Run Code Online (Sandbox Code Playgroud)

根据文档,...真值为True.

但我仍觉得上面的代码有点不一致.

......更有趣的事情:

In [48]: 2==True
Out[48]: False <===== why 1==True returns True while 2==True returns False?

In [49]: if(2):
    ...:     print('222')
    ...:     
222
Run Code Online (Sandbox Code Playgroud)

python if-statement python-3.x truthiness

10
推荐指数
2
解决办法
3737
查看次数

双变量的真实性总是它的字符串部分吗?

我的Perl 5.26.2 x64(Cygwin)的经验行为是,当且仅当其字符串部分是真实时,双变量才是真实的:

# Falsy number, truthy string => truthy
$ perl -MScalar::Util=dualvar -E 'my $v=dualvar 0, "foo"; say "yes" if $v'
yes

# Truthy number, falsy string => falsy
$ perl -MScalar::Util=dualvar -E 'my $v=dualvar 1, ""; say "yes" if $v'

# Truthy number, truthy string => truthy
$ perl -MScalar::Util=dualvar -E 'my $v=dualvar 1, "foo"; say "yes" if $v'
yes

# Falsy number, falsy string => falsy
$ perl -MScalar::Util=dualvar -E 'my $v=dualvar 0, ""; say …
Run Code Online (Sandbox Code Playgroud)

perl boolean-expression language-lawyer truthiness

9
推荐指数
1
解决办法
147
查看次数

(A == B == C)比较如何在JavaScript中进行比较?

我期待以下比较给出错误:

var A = B = 0;
if(A == B == 0)
    console.log(true);
else
    console.log(false);
Run Code Online (Sandbox Code Playgroud)

但奇怪的是它会回归false.

更奇怪的是,

console.log((A == B == 1)); 
Run Code Online (Sandbox Code Playgroud)

回报true.

这种"三元"比较如何运作?

javascript comparison truthiness

7
推荐指数
2
解决办法
4091
查看次数