for ...:
if ...:
古いバージョンの Python では、ブロック導入ステートメントの後に、または同様のブロックの導入ステートメントを 1 つしか使用できませんでした。
これらのいずれかと同じ行に複数の単純なステートメントを含めることができることがわかりました。ただし、うまくいかない組み合わせがいくつかあります。たとえば、次のことができます。
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 であると見なされます。このようなコードを書くと、経験豊富な Pythonistas はおそらくあなたのスキルをぼんやりと見るでしょう。
場合によっては、1 行に複数のステートメントを組み合わせることは、わずかに許容されます。例えば:
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)()