声明1和声明2之间是否有任何区别

时间:2015-03-31 15:36:47

标签: python

声明1:`

self.__hours == 0 if self.__hours == 23 else self.__hours=+1

声明2:

       if self.__hours == 23 : 
        self.__hours == 0 
       else :
         self.__hours += 1 

只是造型还是其他什么?

2 个答案:

答案 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设置为某些内容 - 0self.__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。)