6

当声明一个仅用于一个函数的常量时,该变量应该在本地声明,因为它只由该函数使用,还是全局声明,因为它永远不会改变?

IE哪个更好:

CONSTANT = (1, 3, 5, 8)

##SOME OTHER CODE HERE

def function1(arg):
    if arg in CONSTANT:
        do something

或者:

def function1(arg):
    CONSTANT = (1, 3, 5, 8)
    if arg in CONSTANT:
        do something

我知道这两者之间没有太大区别,但我只是想知道这两种做法中哪一种更受欢迎,因为我刚刚开始并想养成良好的习惯。

4

3 回答 3

4

我会把它放在本地。如果需要,您可以随时将其移动到全局,或者通过在类中使它们成为方法并将常量转换为类变量来在函数之间共享它。在这些情况下,一般来说,越本地越好,最好将实现信息隐藏在您的函数中,如您的第二个示例所示。它在这里并没有太大的不同,但是随着您的项目变得更大,可维护性和模块化将保持不变。

于 2013-04-06T13:01:37.377 回答
1

我会将它们放在全球范围内,因为:

  1. 你的变量常量
  2. 在 Python 中,全局作用域被封装在模块命名空间中,这意味着您的变量实际上只是模块内部的全局变量。
  3. 如果你多次调用你的函数,并将你的常量放在本地,它会在你每次调用函数时重新分配它们。
  4. 然后你可以在不同的函数之间共享你的常量。

但是,如果您转向面向对象编程,那么我会将常量作为类变量。

于 2013-04-06T13:11:45.097 回答
0

我想说什么是最好的取决于情况

如果执行时间不是问题,那么每次将常量加载到新变量中不会浪费太多时间。这具有显式显示代码中使用常量的位置的明显优势。

否则,全局很好,但我只会出于优化目的这样做。如果我想到它,优化是我问自己和你一样的问题的唯一原因。

使用全局变量可能还有其他充分的理由:

  • 如果您的程序的用户经常需要在代码中更改其值并且您不想解析程序参数,
  • 如果其他程序需要访问它,
  • 等等

总之,我想说:做你认为最好的事情,但尽可能合理地将事物封装在它们所属的地方(本地人比全局人更受欢迎)。

于 2013-04-06T13:34:16.523 回答