我应该如何缩短这行Python代码?

时间:2015-11-15 18:55:57

标签: python python-2.7 pep8

以下是需要缩短的行。

tree_top = os.path.abspath(os.path.expanduser(os.path.expandvars(sys.argv[1])))
  • 我应该为每个程序创建一个变量吗?
  • 我应该将os.path,abspathos.path.expandvarsos.path.expanduser别名设为更短的名称吗?
  • 我应该使用反斜杠吗?

2 个答案:

答案 0 :(得分:8)

减小宽度的最简单方法是在括号内使用隐式线延续:

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])))

或使用两者的某种组合。

答案 1 :(得分:2)

您可以使用名为Implicit Line Joining的Python功能。

括号内的代码隐含地是同一指令的一部分,因此,您可以通过将表达式分散在多行来“缩短”表达式:

tree_top = os.path.abspath(
    os.path.expanduser(
        os.path.expandvars(
            sys.argv[1]
        )
    )
)

现在,每行不超过80个字符,并且是干净的PEP8代码。

如果您的操作的每个步骤都得到了更明确的定义,那么使用中间变量也是缩短每条线路的好方法。在某些情况下,它可以帮助使代码更清晰,但这里的中间步骤不太有用