您的位置:首页 > 编程语言 > Python开发

python的命名空间

2013-07-05 15:10 351 查看
命名空间:从命名到对象的映射

1. 例子:
内置命名集:包括像abs()这样的函数
模块中的全局命名
函数调用中的局部命名
2. 某种意义上,对象的属性名也算一种命名空间
3. 不同命名空间之间的命名之间没有联系。例如两个模块同时定义了一个名为A的函数,这样不会发生混淆,不过要以模块名为前缀来引用他们
4. 当函数被调用时创建一个局部命名空间

作用域

python程序中一个命名空间可以访问的文法区域,直接访问是指在引用命名时不用加前缀
只有模块、函数、类可以引入作用域,其他代码块不会引入作用域(比如while,if等),这和C、C++、Java很不一样
在python中,使用一个变量不需要先声明它,但是在使用时,它必须已经绑定到一个某个对象中,而变量的绑定将在当前作用域中引入新的命名,同时屏蔽外层作用域中的同名命名

看以下代码例子:
i = 1
def fun():
    i = 9
    print i

fun()
print i


这段代码运行的结果是:

1

9
我们看到,fun中定义了局部变量 i,并且将全局变量 i 屏蔽了

以下内容摘自:http://www.cnblogs.com/frydsh/archive/2012/08/12/2602100.html

在Python中,名字绑定在所属作用域中引入新的变量,同时绑定到一个对象。名字绑定发生在以下几种情况之下:
1.参数声明:参数声明在函数的局部作用域中引入新的变量;
2.赋值操作:对一个变量进行初次赋值会在当前作用域中引入新的变量,后续赋值操作则会重新绑定该变量;
3.类和函数定义:类和函数定义将类名和函数名作为变量引入当前作用域,类体和函数体将形成另外一个作用域;
4.import语句:import语句在当前作用域中引入新的变量,一般是在全局作用域;
5.for语句:for语句在当前作用域中引入新的变量(循环变量);
6.except语句:except语句在当前作用域中引入新的变量(异常对象)。
在Python中,类定义所引入的作用域对于成员函数是不可见的,这与C++或者Java是很不同的,因此在Python中,成员函数想要引用类体定义的变量,必须通过self或者类名来引用它。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: