带行续的赋值 - Python

17 投票
2 回答
17559 浏览
提问于 2025-04-18 00:04

当变量嵌套得很深、名字比较长,而且赋值的内容或表达式也很长时,给变量赋值时应该采用什么样的风格呢?

举个例子:

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 个回答

26

我觉得在Python中,换行没有什么问题。不过有时候我更喜欢这样写:

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

这样在写长表达式的时候也很有用。

9

换行符的使用有点忌讳,但也不是世界末日。我们总是要努力写出让其他程序员能理解的代码。

使用换行符 \ 是我们实现代码可读性的一个工具。

命名规范也是一个问题。正如达芬奇所说:“简单就是终极的复杂。”如果你能让变量名既简短又易懂,那你就很厉害了 ;-)。简单地用 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>):

把代码拆分成逻辑块,并把这些块放到函数里,是让代码更易读的另一种方法(我们只有这么多内存,希望能把整个函数放进去……人类在分页方面并不擅长)

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

撰写回答