Python中的IF语句和空格问题
我在一个循环里有一个 if
语句,写得跟下面这个完全一样,但我有点搞不清楚到底发生了什么。我刚从Java转过来,现在对“空格很重要”这件事有点困惑,找不到这个代码的解释:
if x % 2 == 1: z = z + y
y = y << 1
x = x >> 1
有人能解释一下为什么 z = z + y
和 if
在同一行吗?还有为什么下面的两行没有向右缩进,没在 if
的范围内?谢谢
2 个回答
1
这只是语法上的一种简化,让if
可以写成一行。其实和下面这个是一样的:
x = 4
y = 5
z = 0
while x:
if x % 2 == 1:
z = z + y
y = y << 1
x = x >> 1
print 'x: %s, y: %s, z: %s' % (x, y, z)
(我加了一些额外的行,以便有一个能运行的例子)
你甚至可以把它缩短成:
x = 4; y = 5; z = 0
while x:
if x % 2 == 1: z = z + y
y = y << 1; x = x >> 1; print 'x: %s, y: %s, z: %s' % (x, y, z)
但不要这样做。这不是Python的风格!! :-D 我也是从Java过来的,刚开始的时候我很想要一个;
,但是当你习惯了之后,你会觉得用它们……有点奇怪(至少我觉得用起来有点丑)。
3
这相当于
if x % 2 == 1:
z = z + y
y = y << 1
x = x >> 1
这只是一个单行子句的简写方式。