一、 命名空间
先来一段概要总结:
白话一点讲:命名空间是对变量名的分组划分。
不同组的相同名称的变量视为两个独立的变量,因此隶属于不同分组(即命名空间)的变量名可以重复。
命名空间可以存在多个,使用命名空间,表示在该命名空间中查找当前名称。
虽然命名空间是一个跟具体语言无关的概念,但是,不同的语言由于机制不同,因此在表现上还是有差别的。例如下述Python的例子:
x = 10
def foo():
global x
x += 1
print x
- 在这个例子中,使用函数外部的变量
x
之前需要使用globalv
关键字。这在C++
中是不需要的。 - 所以,在理解Python的命名空间时,不能C++的规则来套,因为语法规则属于机制的实现。
- 在
C
语言中,存在命名空间的概念,但是并没有提供对命名空间的支持,因此,在编写C
程序的过程中,很容易发生名称碰撞(name collision),而避免这一问题,基本靠程序员自身来完成。 - 在
C
语言中,变量名是内存地址的别名。但是由于Python一切皆对象,所以在Pytho