如何在python中为长名称选择合适的变量名

2024-10-01 15:48:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助为实际名称较长的变量选择正确的名称。我读过pep8文档,但我找不到解决这个问题的方法。在

您是将very_long_variable_name重命名为vry_lng_var_nm之类的名称,还是保持原样。我注意到python在库中构建的名称非常短,如果存在这种情况,我希望遵循惯例。在

我知道我可以给它起一个不太描述性的名字,然后加上描述,这样可以解释它的含义,但是你认为变量名应该是什么呢。在


Tags: 方法name文档名称var情况variablelong
1条回答
网友
1楼 · 发布于 2024-10-01 15:48:55

PEP8建议使用短变量名,但要实现这一点,需要良好的编程卫生。以下是一些保持变量名简短的建议。在

变量名不是完整的描述符

首先,不要把变量名当作其内容的完整描述符。名字应该是清楚的,主要是为了能跟踪他们的来源,只有这样他们才能给出一点内容。在

# This is very descriptive, but we can infer that by looking at the expression
students_with_grades_above_90 = filter(lambda s: s.grade > 90, students)

# This is short and still allows the reader to infer what the value was
good_students = filter(lambda s: s.grade > 90, students)

在评论中添加详细信息

使用注释和doc字符串描述正在发生的事情,而不是变量名。在

^{pr2}$

太具体的名称可能意味着太具体的代码

如果您觉得需要为函数指定一个非常具体的名称,则可能是该函数本身太特殊了。在

# Very long name because very specific behaviour
def get_students_with_grade_above_90(students):
    return filter(lambda s: s.grade > 90, students)

# Adding a level of abstraction shortens our method name here
def get_students_above(grade, students):
    return filter(lambda s: s.grade > grade, students)

# What we mean here is very clear and the code is reusable
good_students = get_students_above(90, students)

保持短范围以便快速查找

最后,在较短的范围内封装逻辑。这样,就不需要在变量名中给出太多细节,因为可以在上面几行中快速查找它。一条经验法则是让你的函数适合你的IDE而不需要滚动,如果你超出了这个范围,就在新函数中封装一些逻辑。在

# line 6
names = ['John', 'Jane']

... # Hundreds of lines of code

# line 371
# Wait what was names again?
if 'Kath' in names:
    ...

在这里,我失去了names是什么,向上滚动会使我失去更多的线索。这样更好:

# line 6
names = ['John', 'Jane']

# I encapsulate part of the logic in another function to keep scope short
x = some_function()
y = maybe_a_second_function(x)

# line 13
# Sure I can lookup names, it is right above
if 'Kath' in names:
    ...

花点时间考虑可读性

最后但并非最不重要的是花时间思考如何使代码更具可读性。这和你花在思考逻辑和代码优化上的时间一样重要。最好的代码是每个人都可以阅读的代码,因此每个人都可以改进。在

相关问题 更多 >

    热门问题