Python变量命名规范

10

我试图转换为PEP8的命名规范(从一种比较个人化的驼峰命名法),我想知道你们如何处理已经存在的函数/变量会被覆盖的情况?

例如,有这样一个情况:

open, high, low, close, sum = row

如果我不使用一个好的集成开发环境(IDE),我甚至不会注意到我已经覆盖了重要的基本函数“open”和“sum”。其次,你会选择什么样的变量名称呢?在这个例子中,我会使用应用程序匈牙利命名法,而且不会遇到任何潜在的问题。

谢谢!

5个回答

10
为什么不选用没有冲突的名称?例如,如果它们表示的是“开盘价”,“收盘价”和“总计”,则可以选择opening_priceclosing_pricetotal。虽然可以像其他回复中所述那样限定命名空间,但是对于局部变量而言,应该不需要这样做。无论使用哪种编程语言,都应该了解保留字;它们并不多。

8

我会使用open_sum_


11
虽然PEP8建议这样做,但为什么不选择没有冲突的名称呢?例如,如果变量表示开盘价、收盘价和总价,可以使用 opening_priceclosing_pricetotal。虽然可以像其他回复中所述一样对命名空间进行限定,但是对于局部变量来说肯定不需要这样做。无论您使用哪种编程语言,了解保留字都是您的工作;它们并不多。 - Sideshow Bob
1
@SideshowBob 我认为你应该将你的评论提交为答案,因为在我看来,这是最好的、最简单的、最明显的和最惯用的解决方案,可以解决 OP 的问题。 - Jeet
大家,非常感谢 - 我会采用Sideshow Bob的解决方案。我最初没有这样做的原因是因为我经常使用这些变量,到处都使用类似于 opening_price 这样的东西最终看起来会很混乱。因此,出于这个原因,我将简单地使用 o,h,l,c,因为这些变量仅在函数中本地使用,并且它们被经常使用,因此保持尽可能短是有意义的。如果您不同意,请告诉我。谢谢! - Muppet
短变量名很诱人,我们都会这样做,但它们通常不被视为良好的软件工程实践,除了像循环索引这样的东西。特别是 ol,在某些字体或匆忙中看起来很像 01。如果你想缩短一点,可以使用 openprice 而不是 opening_price。如果你必须使用超短的名称,请在注释中解释它们的含义。 - Sideshow Bob

5
在这种情况下,我会使用一个namedtuple。这将把那些名称转换为限定名称(data.opendata.low等)。
from collections import namedtuple
Data = namedtuple('Data', ['open', 'high', 'low' 'close', 'sum'])

data = Data(*row)

这将消除与内置函数名称冲突的可能性,并有望在此过程中提高整体可读性。

3
如果它们都来自同一领域的值,您可以使用字典:
params = ('open', 'high', 'low', 'close', 'sum') # defined once

val = dict(zip(params, row)) # for each row

# val == {'open': 12, 'high': 34, 'low': 56, 'close': 78, 'sum': 90}

然后你可以直接访问它们:val['open']。你可以遍历它们:val.iteritems()等等。


0
Pep8建议使用下划线作为结尾,但也提到在可能的情况下,使用变量的同义词会是更好的选择。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接