我需要帮助为具有较长实际名称的变量选择适当的名称。我已经阅读了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
as作为函数自变量可以将其从函数名称中删除,而不会引起任何不清楚。
将逻辑封装在较短的范围内。这样,您无需在变量名中提供太多详细信息,因为可以在上面几行中快速查找它。一条经验法则是使您的函数适合您的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:
...
最后但并非最不重要的一点是花时间考虑如何使代码更具可读性。这与您花时间思考逻辑和代码优化一样重要。最好的代码是每个人都可以阅读的代码,因此每个人都可以改进。
问题内容: 我有一种情况,从中获取表名应该是从一个设置变量: 但是这样做会导致MySQL输出错误,所以有人可以向我展示如何实现这一点,因为这是我在MySQL中的基本步骤。 问题答案: 您必须使用准备好的语句来执行此操作。就像是:
问题内容: 我正在尝试编写一个简单的存储过程,该过程需要三个参数“数据库名称一”,“数据库名称二”和“表名称”。然后,sql将对每个数据库中定义的表执行行计数并将其存储。 零星地处理它,我遇到了第一个问题,即您做不到 我知道您可以在命令中使用动态sql,但这并不理想,因为我无法返回值。 下面的示例看起来像它应该工作,但是不起作用。 给出的错误信息是 当前正在使用SQL Server 2008 SP
本文向大家介绍如何在Python中获取变量名称作为字符串?,包括了如何在Python中获取变量名称作为字符串?的使用技巧和注意事项,需要的朋友参考一下 实际上,这不是您在Python中所做的事情,因为变量实际上是对象的名称映射。Python中唯一具有规范名称的对象是模块,函数和类,并且在定义函数或类或导入模块后,当然不能保证此规范名称在任何命名空间中都具有任何含义。这些名称也可以在创建对象之后进行
问题内容: 有没有办法在运行时(从代码中)知道变量的名称?还是在编译过程中忘记了变量的名称(是否使用字节码)? 例如: 注意 :我说的是普通数据类型的变量(,,等) 问题答案: 这里是一个基本的(也许很奇怪)函数,它显示了参数的名称…这个想法是分析代码并搜索对该函数的调用(在 init 方法中添加它可以帮助找到实例名称,尽管带有一个更复杂的代码分析) 请注意:如下面的示例所示,从调用代码中获取多行
问题内容: 问题:是否可以在不使用字符串构造函数的情况下将变量用作表名? 信息: 我现在正在研究一个项目,该项目对来自我的恒星模拟的数据进行分类。为此,我将所有数据加载到sqlite数据库中。它工作得很好,但是我决定为数据库增加更多的灵活性,效率和可用性。我计划稍后在模拟中添加小行星,并希望为每个恒星提供一张表格。这样,我就不必查询每个太阳系中1-4k的20m个小行星的表。 有人告诉我使用字符串构
问题内容: 我想使用运行时之前不知道的字段名称过滤器来调用查询…不确定如何构造变量名称…或者我很累。 如果funct()返回的名称等于 不知道该怎么做… 问题答案: 您可以创建字典,设置参数,然后通过解压缩字典作为关键字参数将其传递给函数: