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

如何在python中为长名称选择合适的变量名,python,pep8,Python,Pep8,我需要帮助为具有长实际名称的变量选择专有名称。我读过pep8文件,但我找不到解决此类问题的方法 您是将very_long_variable_name重命名为类似vry_lng_var_nm的名称,还是保持原样。我注意到python内置库有非常短的名称,如果在这种情况下存在,我希望遵循约定 我知道我可以给它命名一些不太具描述性的名称并添加描述,这可以解释它的含义,但您认为变量名称应该是什么。PEP8建议使用短变量名称,但实现这一点需要良好的编程卫生。下面是一些保持变量名简短的建议 变量名不是完整描

我需要帮助为具有长实际名称的变量选择专有名称。我读过pep8文件,但我找不到解决此类问题的方法

您是将
very_long_variable_name
重命名为类似
vry_lng_var_nm
的名称,还是保持原样。我注意到python内置库有非常短的名称,如果在这种情况下存在,我希望遵循约定


我知道我可以给它命名一些不太具描述性的名称并添加描述,这可以解释它的含义,但您认为变量名称应该是什么。

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)
将详细信息放入注释和文档字符串中 使用注释和文档字符串来描述正在发生的事情,而不是变量名

# We feel we need a long variable description because the function is not documented
def get_good_students(students):
    return filter(lambda s: s.grade > 90, students)

students_with_grades_above_90 = get_good_students(students)


# If the reader is not sure about what get_good_students returns,
# their reflex should be to look at the function docstring
def get_good_students(students):
    """Return students with grade above 90"""
    return filter(lambda s: s.grade > 90, students)

# You can optionally comment here that good_students are the ones with grade > 90
good_students = get_good_students(students)
太具体的名称可能意味着太具体的代码 如果您觉得某个函数需要一个非常特定的名称,那么可能是该函数本身太特定了

# 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)
请注意,在上一个示例中,使用
grade
作为函数参数可以在不失清晰的情况下将其从函数名中删除

保持短范围以便快速查找 将逻辑封装在较短的范围内。这样,就不需要在变量名中给出太多细节,因为可以在上面几行快速查找它。一个经验法则是,在不滚动的情况下使您的函数适合您的IDE,并在超出此范围的情况下将一些逻辑封装到新函数中

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

... # Hundreds of lines of code

# line 371
# Wait what was names again?
if 'Kath' in 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:
    ...
花时间考虑可读性
最后但并非最不重要的一点是花时间思考如何使代码更具可读性。这与您花在思考逻辑和代码优化上的时间一样重要。最好的代码是每个人都可以阅读的代码,因此每个人都可以改进。

相关-这个家伙把自己的人生故事写成了一个函数名。你认为这和我的问题有关吗?可能是重复的,这是一个固执己见的问题,否则这个重复就是完美的。没有正确或错误的方法,因为即使是政治公众人物也没有特别提到这一点(觉得没有必要)。
导入这一点
->可读性很重要。很多。当然这是非常重要的,即使是在单独做一个项目的时候。