两者之间有实际区别吗
if statement:
和
if statement == True:
除了第一个更短之外,一个优先级更高,还是更慢?
编辑:
我意识到这可能并不清楚,但语句
通常是语句=真的
。
if语句
:只要语句
为真(一个int
不等于'0',true
,一个至少有一个元素的列表
,一个带有一个键、值对的dict
,等等),则计算结果为真。
if语句==True
:仅当语句
为True
时才计算为True,即
>>> print(statement)
True
这些是不平等的。Python允许您在大量元素上定义if
语句。例如,你可以写:
if []: # is False
pass
if 1425: # is True
pass
if None: # is False
pass
基本上如果你写如果
示例,如果x
不等于x==True:
例如:
if 0.1:
pass # will take this branch
else:
pass
将取if
分支,而:
if 0.1 == True:
pass
else:
pass # will take this branch
将不接受if
分支。这是因为如果一个数字是一(1
,1L
,10j
,…),那么它就等于True
。而如果x
为非零,则数字的bool(x)
为True
。
也可以定义一个对象,其中==
将引发异常。喜欢:
class Foo:
def __eq__(self,other):
raise Exception()
现在调用Foo()==True
将导致:
>>> Foo() == True
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in __eq__
Exception
但是,不建议在\uuuu eq\uuu
函数中引发异常(无论如何,我强烈建议不要这样做)。
然而,它认为:如果
如果两者相等,显然
此外,检查集合是否为空通常更惯用:
some_list = []
if some_list: # check if the list is empty
pass
这也是更安全的,因为如果
某些列表
可能是无
(或其他类型的集合),您仍然会检查它是否包含至少一个元素,因此稍微改变一下您的想法不会产生显著的影响。
所以,如果您必须编写
if x==True
,那么x
本身的真实性通常会有些奇怪。
正如文档(Python-2.x/Python-3.x)中指定的那样。有一种方法可以解决真实性问题。
在python-2.x中,它的计算方式如下(过于简化的版本,更多的“伪python”代码来解释它的工作原理):
# Oversimplified (and strictly speaking wrong) to demonstrate bool(..)
# Only to show what happens "behind the curtains"
def bool(x):
if x is False or x is None:
return False
if x == 0 or x == 0.0 or x == 0L or x == 0j:
return False
if x is () or x == [] or x == '' or x == {}:
return False
if hasattr(x,'__nonzero__'):
y = x.__nonzero__()
return y != 0 and y != False
if hasattr(x,'__len__'):
return x.__len__() != 0
return True
以及python-3.x的过度简化版本:
# Oversimplified (and strictly speaking wrong) to demonstrate bool(..)
# Only to show what happens "behind the curtains"
def bool(x):
if x is False or x is None:
return False
if x == 0 or x == 0.0 or x == 0j:
return False
if x is () or x == [] or x == '' or x == {}:
return False
if hasattr(x,'__bool__'):
return x.__bool__() is True
if hasattr(x,'__len__'):
return x.__len__() != 0
return True
这行代码是有效的C代码(至少可以编译),但无效的C代码(不能编译)。我知道两种语言之间有差异,但这次是出乎意料的。 我一直认为语法是 但这将使其在两种情况下都有效。 我的问题是: 为什么这个不能用C编译 为什么会存在这种差异
着色器语言GLSL中关于if语句、for语句的使用,和javascript语言、C语言中的if语句、for语句执行逻辑规则基本一致,这里默认你已经有一定的编程基础,也就不做过多讲解,只是简单说明一下。 单独使用if if(x>100){ gl_FragColor = vec4(1.0,0.0,0.0,1.0);//红色 } if-else形式 bool colorBool; // 根据布尔值
输出:<代码>编译错误。变量j可能尚未初始化。 为什么会这样呢?
if 语句,就是类似于「如果○○的话,做●●」,根据条件判断脚本的一部分是否执行的语法。 语法如下: if(expression) 语句或语句块 else 语句或语句块 第一个“语句或语句块”是当 expression 表达式的结果为真时执行的部分,第二个“语句或语句块”则是结果为假时执行的部分。如果不需要 else 以后的部分,可以省略。 例: if(a==b) inform("a和b相等
我正在学习一门在线编码课程,该课程导入了appstore上应用程序的大量数据,并要求我们计算出游戏或社交网络应用程序的平均评分。执行此操作时,我意外地键入了if语句,如上图所示: 这是我不明白的,总共有7197个应用程序,如果我使用上面的if语句,我的games\u social\u评级列表的长度是7197。游戏应用程序总数为3862,社交网络应用程序总数为167。7197是从哪里来的?当我输入上
我所说的“空if语句”是指这样的东西(注意分号): 我在考虑这个应用程序时遇到了麻烦。使用time循环,您可以这样做: 但对于if语句没有这样的应用。此外,Java编译器在遇到此类语句时不会发出错误或警告。这可能会导致大而无声的问题,尤其是对于冗长而复杂的语句: 我的问题是:为什么Java中允许这样做?更重要的是,我是否可以启用一个选项,以便在发生这种情况时引发警告? (之前有人问过关于C#的这个