代码之家  ›  专栏  ›  技术社区  ›  prosseek

python中的参数、局部变量和全局变量编码约定

  •  2
  • prosseek  · 技术社区  · 14 年前

    在Python中,无法区分参数、局部变量和全局变量。这样做的简单方法可能是使用一些编码约定,例如

    • 全局变量以字母和大写字母开头
    • 参数以结尾_
    _Gvariable = 10
    def hello(x_, y_):
       z = x_ + y_
    

    这是一条蟒蛇之路吗?我的意思是,是否有现成的/一致同意的编码标准来区分Python中的标准?

    ===增加===

    我只想区分参数和局部变量。因为参数是从外部给出的,更像是一个只读存储器,在某种意义上,它不被假定为只读的。 C++提供const关键字以防止参数更改,但不用于Python。我认为在python中,附加_u可以是模仿这个特性的一种方法。

    3 回复  |  直到 14 年前
        1
  •  2
  •   user297250    14 年前

    我将根据PEP8指南来完成您所有的Python编程。任何需要阅读你的代码的人都会为此感谢你。

    http://www.python.org/dev/peps/pep-0008/

    为什么需要区分参数和局部变量,因为一个变量只是另一个变量的子集。你可以使用 locals() , globals() vars() 如果您有本地全局问题,则查看范围。这个 inspect 模块也可以帮助解决这个问题。如果可能,尽量避免使用全局变量。

        2
  •  1
  •   Dave Kirby    14 年前

    在python中,很明显哪些变量是本地变量,哪些是全局变量,因为要修改全局变量,必须使用 global 关键字位于函数开头。但是,有时我会添加一个全局声明,即使Python不需要编译它,以强调对象是全局的,例如修改可变的全局数据结构。

    参数应该是明显的,因为它们在函数声明中。

    正如其他人所说,常量应该在大写字母中加下划线,这是许多语言共享的约定。

    如果您发现跟踪哪些变量是全局变量、局部变量和参数变量有困难,那么我建议您的函数可能太长,而且做得太多。函数和方法应该简短并且只做一件事。如果我的函数超过了大约10-20行代码,我就开始感到重构的痒。

    我建议你读一下罗伯特·马丁的《清洁代码》。例子是在Java中,但这些原则适用于所有语言。

        3
  •  0
  •   DasIch    14 年前

    那太可怕了。对于全局和局部对象,没有任何理由使用特殊的命名方案。此外,还应避免使用全局对象,除非它们是函数、类或常量。

    常量的名称应该是大写的,并用下划线分隔,例如,类名看起来像这样,函数和方法名看起来像任何其他名称。对于特定于实现、可以随时更改/删除或由于任何其他好的原因而不能依赖的对象的名称,应以下划线作为前缀。

    您还应该阅读Python StyleGuide PEP8,它涵盖了这些和样式相关的更多规则,只要它不会降低代码的可读性就应该遵循这些规则。大多数Python项目都遵循这个或至少是这个样式指南的兼容版本。