Python:在方法之间传递变量时,是否需要为其指定新名称?

时间:2010-05-21 22:37:50

标签: python coding-style methods

我认为如果程序很小并且有很多方法,答案可能是“不”,但是在更大的程序中呢?如果我要在整个程序中使用多个方法中的一个变量,那么它是否更明智:

为每种方法提出不同的措辞(以消除命名冲突)。 为每种方法使用相同的名称(以消除混淆) 只需使用全局变量(以消除两者)

这更像是一个风格问题而不是其他任何问题。传递变量时使用什么命名约定?

6 个答案:

答案 0 :(得分:4)

在方法之间传递变量时...没有命名冲突,因为变量在每个方法中都是局部的,两种方法中的相同名称都可以消除混淆。

def printIt(num):
    print(num)

def f():
    num = 2
    printIt(num)

答案 1 :(得分:3)

我倾向于在本地函数中重复使用变量名,只要它们是中间过程。通常是“结果”用于数据库查找或使用中间的计算,并且需要生成或构造方法的最终结果。

我很少使用全局变量,事实上只有我必须这样做。

答案 2 :(得分:2)

Python的范围规则几乎可以让您免于为变量使用不同或相同的名称来满足语言需求。

变量名称选择应主要由可读性和可维护性问题驱动。通常,在整个代码中使用一个名称来识别特定类型的东西是很好的。这种一致性对读者有帮助。命名变量,方法和类是使你的意图明确的最重要的工具之一 - 对你自己和他人来说。

关于命名事物的文献很多(并非完全一致)。需要考虑的几件事情:

  1. 具有小范围的名称可以是短名称,不一定能告诉整个故事变量,因为变量的整个上下文很容易看到。 i,j,k作为循环中的计数器可能是典型的例子---但是你在Python中没有看到那么多用于收集循环结构中项目的花花公子。
  2. 另一方面,具有较大范围的名称(可能是类中的实例变量)应该具有更完全描述性的名称,因为它们出现在初始化/修改上下文不可见的位置。
  3. 尽量不要在你的名字中加入“噪音”碎片。 frequencyInfo ---究竟是什么,Info部分添加到了什么东西?
  4. 不要在名称中包含数据结构类型--- urldict中的dict对你没什么帮助。
  5. 尽可能使用您正在使用的域中的名称,但不要强行使用。
  6. Python风格倾向于简洁的名字。仔细思考和选择通常会产生一个简短而又恰当的名称。

答案 3 :(得分:1)

不要发明指示名称所属方法的方法。如果编码正确,则不会将其他方法变量视为本地变量。如果你对方法foobar有一个hanle并希望它的foo值使用foobar.foo。

变量名称应指示变量的内容并帮助理解代码。由很多不同名称引用foo,因为很多方法使用foos都无济于事。你可以更好地花时间来澄清那里的foo不是foo的案例。对于这些情况,您可能需要在至少一种情况下使用不同的术语。在您的代码中记录案例。

对变量使用相同的名称将有助于跟踪代码中使用关键对象的位置。您还将拥有许多通用变量,使代码更容易理解:i,j和k用于交互;中间结果的结果;等。

答案 4 :(得分:1)

当它意味着相同的东西时,你应该使用相同的名称。例如,如果您有一个“汽车”数据库,您可能希望使用名称“汽车”来指代接受汽车作为参数或在内部使用汽车对象的每个方法或函数中的单个汽车。这样做,阅读代码的人会开始对自己说“好吧,这是一辆车”,而不是“嗯,我想知道'foo'是什么类型的东西......”。

因此,在使用变量名时要保持一致,这意味着只要具有相同的含义,就可以多次使用相同的名称。如果可能的话,永远不要使用相同的名称来表示两种不同的东西。例如,不要使用“item”表示一个上下文中的汽车,而使用另一个上下文中的随机项。

答案 5 :(得分:1)

没有这样的要求在不同的方法或函数参数中给变量赋予不同的名称。事实上,它会极大地损害可读性并违背常识 - 当两件事情相同时,人们试图给他们提供相同的名称,而不是不同的名称。