使用续行分配 - Python

She*_*ork 8 python styling pep

我希望我没有违反任何SO规则:当变量嵌套多个级别深度,具有相当长的名称并且被赋予相当长的值/表达式时,为变量赋值的首选样式是什么.

例如:

if this:
    if that:
        if here:
            if there:
                 big_variable['big_key']['big_value'] = another_big_variable_that_pushes_line_over_79_characters
                 other_thing = something
Run Code Online (Sandbox Code Playgroud)

字符限制违规只是单个数字,但我想清理我的代码,以便尽可能忠实地遵循PEP 8.我已经完成了以下操作,但我仍然是python的新手,我不确定是否会让经验丰富的python程序员感到畏缩:

if this:
    if that:
        if here:
            if there:
                big_variable['big_key']['big_value'] = \
                    another_big_variable_that_pushes_line_over_79_characters
                other_thing = something
Run Code Online (Sandbox Code Playgroud)

我觉得线条延续字符有些禁忌; 但是,如果我正在使用这些大字典而且我不能在变量名称的中间做一个干净的休息,我真的不能想到一个更清洁的解决方案.谢谢您的帮助!

sws*_*phe 12

我不认为Python中的行继续存在任何问题.但有时我更喜欢这个:

big_variable['big_key']['big_value'] =(
    another_big_variable_that_pushes_line_over_79_characters
)
Run Code Online (Sandbox Code Playgroud)

它在长表达式中也很有用.

  • +1。事实上,这正是 PEP 8 所说的:“换行长行的首选方法是在圆括号、方括号和大括号内使用 Python 隐含的行延续。通过将表达式换行在括号中,可以将长行分成多行。这些应优先使用反斜杠来继续行。” 但请注意,赋值运算符的*两侧*都应该有空格:`= (`,而不是`=(`。 (3认同)

And*_*dyG 8

续行有点忌讳的,但不是世界的末日.我们必须始终努力编写代码,以便其他程序员可以理解我们在做什么.

使用直线延续字符\只是我们工具库中实现这一易读性目标的一个工具.

命名约定是另一个问题.正如达芬奇所说:"简约是最终的复杂性".如果你可以使变量名称变小和可理解,那么你很复杂;-).只是说var1, var2, var3等等太容易了.提出好名字是一种技巧,需要付出努力.

您是否愿意看到名为ChiefExecutiveOfficerOfCompanysName或的变量CEOName

如果您可以组合if语句,那么您的代码可以变得更加清晰.如果你有一些大的层次结构if...else-if,你可能会做错事(这是代码味道).例如,您可以更改此设置:

if this:
    if that:
        if here:
            if there:
Run Code Online (Sandbox Code Playgroud)

进入:

if this and that and here and there:
Run Code Online (Sandbox Code Playgroud)

或者将这样的粗略逻辑抛入评估函数中,如下所示:

if EvaluateConditions(<args>):
Run Code Online (Sandbox Code Playgroud)

将代码分解成逻辑部分,并将这些部分放入函数中是另一种使事物可读的方法(我们只有很多RAM,我们希望将整个函数放在其中...人类不是很擅长分页)

通过使用参数化函数或一些好的设计 模式,避免使用稍微更改来复制和粘贴代码