Python中的IF语句和空格问题

0 投票
2 回答
3927 浏览
提问于 2025-04-18 01:31

我在一个循环里有一个 if 语句,写得跟下面这个完全一样,但我有点搞不清楚到底发生了什么。我刚从Java转过来,现在对“空格很重要”这件事有点困惑,找不到这个代码的解释:

if x % 2 == 1: z = z + y
y = y << 1
x = x >> 1

有人能解释一下为什么 z = z + yif 在同一行吗?还有为什么下面的两行没有向右缩进,没在 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

这只是一个单行子句的简写方式。

撰写回答