旧版本的 Python 只允许在for ...:
if ...:
或类似的块介绍性语句之后使用单个简单语句。
我看到一个人可以在同一行有多个简单的语句作为这些语句中的任何一个。但是,有各种组合不起作用。例如我们可以:
for i in range(3): print "Here's i:"; print i
...但是,另一方面,我们不能:
for i in range(3): if i % 2: print "That's odd!"
我们可以:
x=10
while x > 0: print x; x-=1
...但我们不能:
x=10; while x > 0: print x; x-=1
... 等等。
无论如何,所有这些都被认为是非常非pythonic。如果您编写这样的代码,那么有经验的 Python 达人可能会对您的技能持暗淡的看法。
在某些情况下,将多个语句组合在一行上是勉强可以接受的。例如:
x=0; y=1
... 甚至:
if some_condition(): break
...对于简单break
continue
甚至是return
陈述或分配。
特别是如果需要使用一系列elif
可能会使用类似的东西:
if keystroke == 'q': break
elif keystroke == 'c': action='continue'
elif keystroke == 'd': action='delete'
# ...
else: action='ask again'
......那么你可能不会太惹恼你的同事。(然而,elif
类似尖叫的链被重构为一个调度表......一个可能看起来更像的字典:
dispatch = {
'q': foo.break,
'c': foo.continue,
'd': foo.delete
}
# ...
while True:
key = SomeGetKey()
dispatch.get(key, foo.try_again)()