带续行的赋值

问题描述 投票:0回答:2

当变量嵌套了几层、名称相当长并且被分配的值/表达式相当长时,为变量赋值的首选样式是什么?

例如:

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

字符限制违规仅在个位数,但我想清理我的代码,使其尽可能忠实地遵循 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

我觉得续行符有点禁忌;但如果我正在使用这些大字典,并且我无法在变量名称中间彻底打破,我真的想不出比我拥有的解决方案更干净的解决方案。

python styling pep
2个回答
27
投票

我认为Python中的续行没有任何问题。但有时我更喜欢这个:

big_variable['big_key']['big_value'] =(
    another_big_variable_that_pushes_line_over_79_characters
)

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


9
投票

续行有点禁忌,但这并不是世界末日。我们必须始终努力编写代码,以便其他程序员能够理解我们在做什么。

使用续行字符

\
只是我们实现易读性目标的工具之一。

命名约定是另一个问题。正如da Vinci所说:“简单就是终极的复杂。”如果你能让变量名变得小且易于理解,那么你就是老练的;-)。光说var1, var2, var3等太容易了。想出好名字是一门

技能
,需要努力。 您希望看到名为

ChiefExecutiveOfficerOfCompanysName

CEOName
的变量吗?
如果您可以组合 

if

语句,那么您的代码可以变得更加清晰。如果你有一些大的

if...else-if
层次结构,那么你可能做错了什么(这是
代码味道
)。例如,您可以更改此: if this: if that: if here: if there:

进入此:

if this and that and here and there:

或者将这种粗略的逻辑扔进评估器函数中,如下所示:

if EvaluateConditions(<args>):

将代码分解成逻辑块,并将这些块放入函数中是使内容可读的另一种方法(我们只有这么多 RAM,并且我们希望将整个函数放入其中......人类不太擅长寻呼)

避免通过使用参数化函数或一些好的

设计

模式来复制和粘贴稍有更改的代码。

© www.soinside.com 2019 - 2024. All rights reserved.