python的命名空间

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


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


  5. 这段代码运行的结果是:
    1
    9
  6. 我们看到,fun中定义了局部变量 i,并且将全局变量 i 屏蔽了

在Python中,名字绑定在所属作用域中引入新的变量,同时绑定到一个对象。名字绑定发生在以下几种情况之下:

    1.参数声明:参数声明在函数的局部作用域中引入新的变量;

    2.赋值操作:对一个变量进行初次赋值会在当前作用域中引入新的变量,后续赋值操作则会重新绑定该变量;

    3.类和函数定义:类和函数定义将类名和函数名作为变量引入当前作用域,类体和函数体将形成另外一个作用域;

    4.import语句:import语句在当前作用域中引入新的变量,一般是在全局作用域;

    5.for语句:for语句在当前作用域中引入新的变量(循环变量);

    6.except语句:except语句在当前作用域中引入新的变量(异常对象)。

在Python中,类定义所引入的作用域对于成员函数是不可见的,这与C++或者Java是很不同的,因此在Python中,成员函数想要引用类体定义的变量,必须通过self或者类名来引用它。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值