带行续的赋值 - 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
虽然字符限制的超出部分只有个位数,但我想把我的代码整理得更整洁,尽量遵循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>):
把代码拆分成逻辑块,并把这些块放到函数里,是让代码更易读的另一种方法(我们只有这么多内存,希望能把整个函数放进去……人类在分页方面并不擅长)