(python)我的变量应该是局部变量还是全局变量?(最佳实践)

2024-04-19 18:32:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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

IE哪个更好:

CONSTANT = (1, 3, 5, 8)

##SOME OTHER CODE HERE

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

或者:

^{pr2}$

我知道这两者之间没有太大的区别,但我只是想知道这两种做法中哪一种比较受欢迎,因为我才刚刚起步,想养成良好的习惯。在


Tags: 函数in声明ifheredefargcode
3条回答

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

我会把它们放在全球,因为:

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

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

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

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

否则,全局变量是可以的,但我只会为了优化目的而这样做。如果我想一想,优化是我问自己和你同样问题的唯一原因。在

可能还有其他好的理由使用全局

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

最后,我想说:做你认为最好的事情,但尽量合理地把它们封装在属于它们的地方(本地人比全球人更受欢迎)。在

相关问题 更多 >