Python: 在方法之间传递变量时,是否需要赋予新名称?

2 投票
6 回答
721 浏览
提问于 2025-04-15 23:00

我在想,如果程序比较小,而且方法很多的话,答案可能是“否”,但如果是一个较大的程序呢?如果我在程序的多个方法中都要使用同一个变量,哪种做法更聪明呢:

1. 为每个方法想一个不同的名字(这样可以避免名字冲突)。
2. 每个方法都用同一个名字(这样可以避免混淆)。
3. 直接使用全局变量(这样可以同时避免以上两种问题)。

这其实更多是一个风格上的问题。你在传递变量时,通常使用什么命名规则呢?

6 个回答

2

Python的作用域规则让你不必为了满足语言的要求而使用不同或相同的变量名。

选择变量名时,主要应该考虑可读性和可维护性。一般来说,最好在代码中用一个名字来表示某种特定的东西。这样的一致性对读代码的人很有帮助。给变量、方法和类命名是你让自己和别人明白你意图的一个重要工具。

关于命名的事情,有很多(而且并不完全一致)的讨论。这里有几个需要考虑的点:

  1. 作用域小的名字可以用短一些的名字,因为变量的整个上下文很容易看得见。比如在循环中用i、j、k作为计数器就是经典例子,但在Python中,使用“for item in collection”这种写法时,通常不太会看到这种情况。
  2. 另一方面,作用域大的名字(比如类中的实例变量)应该有更完整的描述性名字,因为它们出现在上下文不明显的地方。
  3. 尽量不要在名字中加入“噪音”部分。比如frequencyInfo——Info这个部分到底有什么用呢?
  4. 不要在名字中包含数据结构的类型——比如urldict中的dict其实并没有太大帮助。
  5. 如果可以的话,使用你所处领域的名字,但不要强求。
  6. Python的风格倾向于简短的名字。经过仔细思考和选择,通常会得到一个简短但合适的名字。
3

我在本地函数中经常重复使用变量名,只要它们是在处理过程中使用的。通常我会用“result”这个名字来表示数据库查找的结果,或者是一些计算的中间结果,这些结果是用来生成或构建方法最终结果的。

我很少使用全局变量,实际上只有在必须的情况下才会用。

4

在方法之间传递变量时... 不会出现命名冲突,因为每个方法里的变量都是局部的。即使两个方法里有相同的变量名,也不会造成混淆。

def printIt(num):
    print(num)

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

撰写回答