self.__hours == 0 if self.__hours == 23 else self.__hours=+1
声明2:
if self.__hours == 23 :
self.__hours == 0
else :
self.__hours += 1
只是造型还是其他什么?
答案 0 :(得分:1)
一般来说,他们会提供相同的答案并且可以互换。
这两种形式之间的一个明显区别是三元形式可以用在表达式可以用作lambda体的地方,而第二种形式可以用于:
>>> x = lambda y: 0 if y > 0 else -1
>>>
>>> x(1)
0
>>> x(-1)
-1
或
>>> def fn(val):
... print val
...
>>> y = 2
>>> fn(0 if y > 0 else -1)
0
答案 1 :(得分:0)
除了设置语法错误之外,两个语句的精神通常是等价的。第一个是"conditional expression"(也称为“三元表达”)。
self.__hours = 0 if self.__hours == 23 else self.__hours + 1
您将self.__hours
设置为某些内容 - 0
或self.__hours + 1
- 取决于self.__hours
的当前值。
等效if
statement将是:
if self.__hours == 23:
self.__hours = 0
else:
self.__hours = self.__hours + 1
(self.__hours = self.__hours + 1
也可以替换为self.__hours += 1
。)