我无法让命令cmp()工作.
这是代码:
a = [1,2,3]
b = [1,2,3]
c = cmp(a,b)
print (c)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Traceback (most recent call last):
File "G:\Dropbox\Code\a = [1,2,3]", line 3, in <module>
c = cmp(a,b)
NameError: name 'cmp' is not defined
[Finished in 0.1s]
Run Code Online (Sandbox Code Playgroud) 我if今天在python 条款中遇到了意外的结果:
import numpy
if numpy.allclose(6.0, 6.1, rtol=0, atol=0.5):
print 'close enough' # works as expected (prints message)
if numpy.allclose(6.0, 6.1, rtol=0, atol=0.5) is True:
print 'close enough' # does NOT work as expected (prints nothing)
Run Code Online (Sandbox Code Playgroud)
经过一番探讨(即这个问题,特别是这个答案)之后,我明白了原因:type返回的numpy.allclose()是numpy.bool_而不是简单的旧bool,而且显然是foo = numpy.bool_(1),然后if foo将评估,True同时if foo is True将评估False.这似乎是is运营商的工作.
我的问题是:为什么numpy有自己的布尔类型,根据这种情况,最佳做法是什么?我可以写逃脱if foo:得到预期的行为在上面的例子,但我喜欢更严格if foo is True:,因为它排除之类的东西2,并 …