【问题标题】:How should I shorten this line of Python code?我应该如何缩短这行 Python 代码?
【发布时间】:2016-02-16 20:33:49
【问题描述】:
这是需要缩短的行。
tree_top = os.path.abspath(os.path.expanduser(os.path.expandvars(sys.argv[1])))
- 我应该为每个过程创建一个变量吗?
- 我是否应该给
os.path,abspath、os.path.expandvars 和 os.path.expanduser 取别名以使用更短的名称?
- 我应该使用反斜杠吗?
【问题讨论】:
标签:
python
python-2.7
pep8
【解决方案1】:
减小宽度的最简单方法是在括号内使用隐式续行:
tree_top = os.path.abspath(
os.path.expanduser(
os.path.expandvars(sys.argv[1])
)
)
或者,只需选择您需要的os.path 部分:
from os.path import abspath, expanduser, expandvars
tree_top = abspath(expanduser(expandvars(sys.argv[1])))
或使用两者的某种组合。
【解决方案2】:
您可以使用 Python 的一个名为 Implicit Line Joining 的功能。
括号之间的代码隐含地是同一指令的一部分,因此,您可以通过将其分成多行来“缩短”您的表达式:
tree_top = os.path.abspath(
os.path.expanduser(
os.path.expandvars(
sys.argv[1]
)
)
)
现在,每一行都在 80 个字符以下,并且是干净的 PEP8 代码。
如果您的操作的每个步骤都被更清晰地定义,使用中间变量也是缩短每个单独行的好方法。在某些情况下,它可以帮助使代码更清晰,但这里的中间步骤用处不大