使用续行分配 - Python

时间:2014-03-26 22:28:25

标签: 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

字符限制违规只是单个数字,但我想清理我的代码,以便尽可能忠实地遵循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

我觉得线条延续字符有些禁忌;但是,如果我正在使用这些大字典而无法在变量名称中间进行干净的休息,那么我真的无法想到一个更清晰的解决方案。谢谢你的帮助!

2 个答案:

答案 0 :(得分:11)

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

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

它也适用于长表达式。

答案 1 :(得分:7)

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

使用行继续符\只是我们工具库中实现这一易读性目标的一个工具。

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

您希望看到名为ChiefExecutiveOfficerOfCompanysNameCEOName的变量吗?

如果您可以合并if语句,那么您的代码可以变得更加清晰。如果你有if...else-if的大层次结构,那么你可能会做错事(这是一个code smell)。例如,您可以更改此内容:

if this:
    if that:
        if here:
            if there:

进入这个:

if this and that and here and there:

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

if EvaluateConditions(<args>):

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

使用参数化函数或一些好的design patterns

,避免使用稍微更改来复制和粘贴代码
相关问题