例如,我需要使用一个with
语句打开两个文件。他们每个人还有一个条件:实际打开或使用某些东西。
就我而言,是打开由名称指定的文件,还是在未指定名称的情况下使用标准输入/标准输出。问题是它对于单行来说太长太复杂了。
with open(src_name, 'r') if src_name else sys.stdin as src, open(dst_name, 'w') if dst_name else sys.stdout as dst:
# do something
pass
第一次,我有类似的东西:
with open(src_name, 'r') if src_name else sys.stdin as src, \
open(dst_name, 'w') if dst_name else sys.stdout as dst:
# do something
pass
我个人喜欢这个版本。对我来说,它看起来很简单,但我需要使用空格来对齐两行(我的 IDE PyCharm 会警告我有多余的空格)。顺便说一句,在 python 中使用空格来对齐代码真的很重要吗?
另一种对齐方式是:
with open(src_name, 'r') if src_name else sys.stdin as src, \
open(dst_name, 'w') if dst_name else sys.stdout as dst:
# do something
pass
但由于PEP 8 – 缩进,它似乎更糟。
而且我不喜欢可读性较差的“正确”版本,乍一看甚至令人困惑:
with open(src_name, 'r') if src_name else sys.stdin as src, \
open(dst_name, 'w') if dst_name else sys.stdout as dst:
# do something
pass
我可以将它嵌套在两个层次中,但根据 zen..
所以我很感兴趣是否有更优雅的方式来写这个?或者也许我的版本很好,我应该忽略关于空格的警告。