用行继续符赋值-Python

2024-04-20 09:06:56 发布

您现在位置: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

字符限制只有个位数,但我想清理我的代码,使其尽可能忠实地遵循PEP8。我已经做了以下的工作,但是我对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

我得到的印象是行继续字符有点忌讳;但是如果我使用这些大字典,我不能在变量名中间做一个干净的突破,我真的想不出比我有更干净的解决方案了。谢谢你的帮助!


Tags: keyifthatherevaluelineanotherthis
2条回答

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

使用行连续字符\只是我们实现易读性目标的工具之一。

命名约定是另一个问题。正如达芬奇所说,“简单是最高级的。”如果你能使变量名变得小巧易懂,那么你就是最高级的;-)。仅仅说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,我们希望把整个函数都放在其中。。。人类不太擅长寻呼)

避免使用参数化函数或一些好的designpatterns来复制和粘贴稍有更改的代码

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

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

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

相关问题 更多 >