Python中的参数、局部变量和全局变量编码规范

7
在Python中,无法区分参数、局部变量和全局变量。一种简单的方法可能是使用某些编码约定,例如:
  • 全局变量以_和大写字母开头
  • 参数以_结尾
_Gvariable = 10
def hello(x_, y_):
   z = x_ + y_
这是一种Python风格的做法吗?我是说,是否有已经建立/同意的编码标准来区分它们在Python中?
=== 添加 ===
我只想区分参数和局部变量。由于参数是从外部给出的,并且更像是ROM,因为不应该被认为是只读的。C++提供了const关键字以防止参数改变,但Python没有这个关键字。我认为在Python中添加_可以模拟这个功能之一。

6
阅读 PEP 8:http://www.python.org/dev/peps/pep-0008/ - Gary Kerr
1
什么激励你想要做这件事?通常情况下,名称的来源是显而易见的,并且通过阅读代码很容易弄清楚(除非你在做一些疯狂的事情)。 - Mike Graham
1
如果您想防止函数更改参数,就像const一样,可以在传入的对象上使用“copy”模块,以便传入副本而不是实际对象。但这可能会让人感到困惑。最好编写正好符合您要求的代码,并编写单元测试以确保其可靠性。 - user297250
4个回答

5

我会按照PEP 8指南执行您的Python编程。任何阅读您代码的人都会感谢您这样做。

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

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


2
通常在Python中,局部变量和全局变量很容易区分,因为要修改全局变量,必须在函数开头使用“global”关键字进行声明。但是,即使Python不需要编译,有时我也会添加全局声明,以强调对象是全局的,例如修改可变的全局数据结构。
参数应该很明显,因为它们在函数声明中。
正如其他人所说,常量应该使用大写字母和下划线命名,这是许多语言共享的惯例。
如果您发现自己难以跟踪哪些是全局、局部和参数变量,我建议问题可能是您的函数过长且功能过于复杂。函数和方法应该简短并只做一件事情。如果我的函数超过大约10-20行代码,我开始想重构。
我推荐阅读Robert Martin的《Clean Code》一书。示例是用Java编写的,但原则适用于所有语言。

0

这真是太糟糕了。没有任何理由使用特殊的命名方案来区分全局和局部对象。此外,除非它们是函数、类或常量,否则应避免使用全局对象。

常量的名称应该大写,并用下划线分隔,像这样:LIKE_THIS,类名看起来像This,函数和方法名称应该像其他任何名称一样。对于那些具体实现、可以随时更改/删除或不能依赖于任何其他好原因的对象名称,应以下划线为前缀。

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


-2

本地变量是在函数内部声明的变量。

全局变量是在函数外部声明的变量。

例如:

global_var = 5                     #Global Variable
def add(a,b):
    local_var = a+b                #Local Variable
    print("The sum is",local_var)
    print("The global variable is",global_var)
add(10,20)

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接