命名空间的作用_强基初中数学&学Python——第二十七课 作用域与命名空间(续)...

本文详细探讨了Python中的命名空间和作用域概念,指出一个模块作为全局命名空间,类、函数内部则为局部命名空间。属性的作用域覆盖其命名空间及嵌套空间。在函数内部定义的变量、函数和类不构成函数属性,无法直接引用,而在类中定义的成员可在类内外通过命名空间引用。此外,类的方法和嵌套类也有其特定的命名空间和作用域规则。
摘要由CSDN通过智能技术生成

    作用域与命名空间这两个概念,一听起来,觉得“命名空间”是大的范围概念,“作用域”是小的范围概念(例如:Java编程语言中),但在Python中情况没那么简单。

    一个模块(一py文件)是全局命名空间,在全局命名空间中的属性(变量、类、函数)是全局属性;模块中的一个类、一个对象、一个函数是局部命名空间,在局部命名空间中的属性(变量、类、函数、方法)是局部属性。全局属性的作用域是整个文件的代码范围,实际上就包括了全局命名空间和模块中的全部局部空间;局部属性的作用域就包括它被命名的那个命名空间及镶套在这个局部命名空间中的局部命名空间。Python中的命名空间可以镶套,但不能包含。因此,属性的作用域包括它被命名的命名空间和镶套在这个命名空间中的局部命名空间。由此看来,作用域至少包括一个命名空间,作用域的范围大,命名空间的范围小。

    上节课已经讨论作用域内属性或变量的引用,这一节将讨论引用作用域外的属性。

    “借人物,要明求”——在属性名称之前加上命名空间的标识符(模块名称、类名称或对象变量),用点号(.)连接。

    函数命名空间中变量测试,程序和结果:

11ca4435ad134799451b5bcbb32ee4b4.png

a544d8a4f5acff8c0efa277e139d25cd.png

可见,函数中定义的变量不构成函数的属性,所以无法用增加命名空间的前缀进行引用。

    函数命名空间中函数测试,程序和结果:

6b383e857f525aa1c6bdb2cf3358148d.png

a6e438449b8b43e65875bfd3ec8b663f.png

可见,函数中定义的函数也不构成函数的属性,所以无法用增加命名空间的前缀进行引用。

    函数命名空间中类测试,程序和结果:

3b7834b457b2066746a294bdc061d3aa.png

1bbf77b9ca1a4ed2f386ab0c298064b9.png

可见,函数中定义的类也不构成函数的属性,所以无法用增加命名空间的前缀进行引用。

    函数中定义的变量、函数和类都不构成函数的属性,在函数之外是不可见的(不可引用的)。

    类命名空间中变量、方法和类测试,程序和结果:

b11295e71c56bb2c81afd9adc5abf583.png

fa48b67d50b52c4c6f59bb1743058d54.png

可见,类中定义的变量、方法和类都构成类的属性,所以可以用增加命名空间前缀进行引用。

    类中方法命名空间中变量、方法和类测试(类内/类外),程序和结果:

3e1ec2cecfa487a2d103bfe26d96c273.png

e5ae79ff2a0f55594571e0293de79ffb.png

b6e66d471efb1127184445c9943d2549.png

a300a65fbc9a033ce8233b9f2b4f3fd4.png

可见,类中的方法与函数一样,其中的变量、方法和类都不构成类中的方法的属性,在方法外是不可见的。

    类中类命名空间中变量、方法和类测试,程序和结果(类内):

91d71a0f1b378121cbc983a2342ac026.png

17236757cdf3128b793022d8275ce83b.png

程序和结果(类外):

8a4c10b0d1cd010dd8a6539c846f07e6.png

b83eceb5c02b0673a178a8e797f7b444.png

可见,类中类的命名空间与类的命名空间一样,变量、方法和类都构成属性,可以用属性引用方法引用。另外,类内和类外的引用方式有差别,类内不需要Test.前缀。引用前缀可以根据镶套关系到引用者和被引用者的共同命名空间(不包括)为止。

练习题:把这课的测试输入电脑自行测试一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值