Python中的参数,局部变量和全局变量编码约定

时间:2010-04-08 15:39:52

标签: python coding-style

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

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

这是一种Python方式吗?我的意思是,有没有完善/商定的编码标准来区分它们在python中?

=== ADDED ===

我只想区分参数和局部变量。因为参数是从外部给出的,并且更像是ROM,因为它不被认为是只读的。 C ++提供了const关键字来防止参数改变,但不能改变python。我认为追加_可以是在python中模仿这个功能的一种方法。

3 个答案:

答案 0 :(得分:4)

我会根据PEP 8指南进行所有python编程。任何必须阅读您的代码的人都会感谢您。

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

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

答案 1 :(得分:2)

在python中通常很明显变量是局部变量和全局变量,因为要修改全局变量,必须在函数开头使用global关键字来声明它。然而,我有时会添加一个全局声明,即使python没有必要编译它,以强调对象是全局的 - 例如修改可变的全局数据结构。

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

正如其他人所说,常量应该在UPPER_CASE_WITH_UNDERSCORES中,这是一种由许多语言共享的约定。

如果您发现自己无法跟踪哪些是全局,本地和参数变量,我建议问题可能是您的功能太长而且做得太多。功能&方法应该简短,做一件事。如果我的函数超过大约10到20行代码,我就会开始重构痒。

我建议阅读Robert Martin的书“清洁代码”。这些示例使用的是Java,但这些原则适用于所有语言。

答案 2 :(得分:0)

那绝对可怕。没有任何理由对全局和本地对象使用特殊的命名方案。除非它们是函数,类或常量,否则你应该避免使用全局对象。

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

你还应该阅读Python样式指南PEP 8,它涵盖了这些以及你应该遵循的更多与样式相关的规则,只要它不会使你的代码不那么可读。大多数Python项目都遵循此风格指南或至少是此风格指南的兼容版本。