次のコードは 2.7.3 では問題ありませんが、2.7.1 では構文エラーが発生します。これを 2.7.1 で if <>: else: 構造体の 4 行に書き直さなければならないのでしょうか? それとも何か他のことが起こっていますか?
2.7.1 のエラー (2.7.3 で動作):
stub=(sys.argv[ix].lower()=='true' if len(sys.argv)>ix else False)
^
SyntaxError: invalid syntax
2.7.3 と 2.7.1 のマイナー バージョン番号の違いは機能ではなくバグ修正だと思っていたので驚きました。
更新: この問題は、スクリプトが直接 bash として実行された場合にのみ発生します。つまり、「python test.py」ではなく「./test.py」です。また、エラーは 2.7.1 でのみ発生します (2.7.3 はどちらの方法でも問題ありません)。
2.7.3 または 2.7.1 で python test.py を渡し、2.7.3 で ./test.py として渡すが、2.7.1 で実行されている ./test.py で失敗する完全なミニ プログラムを作成しました。
#!/usr/bin/python
import sys
ix=1
stub=sys.argv[ix].lower()=='true' if len(sys.argv)>ix else False
print stub
2.7.1 で実行:
$ ./test.py
File "./test.py", line 5
stub=sys.argv[ix].lower()=='true' if len(sys.argv)>ix else False
^
SyntaxError: invalid syntax
2.7.3 で実行:
$ ./test.py
False