0.模块简单来说就是一段程序。每一个.py文件都是独立的模块
1.导入模块的三种方法:
A. import 模块名 B.from 模块名 import 函数名 C. import 模块名 as t 推荐使用第三种方法,可以防止出现命名冲突
2.模块中不行被导入的属性名称,可以使用__属性名 的方式进行属性私有化,但是如果显式地使用import xx.__属性名,就藏不住了
3.写一个常量模块
class Const:
def __setattr__(self,name,value):
if name in self.__dict__:
raise TypeError('常量无法改变!')
if not value.isupper():
raise TypeError('常量名必须由大写字母组成!')
self.__dict__[name] = value
import sys
sys.modules[__name__] = Const()
4.两个模块相互导入的时候如何防止ImportError
#文件a
import b
def x():
print('x')
if __name__ == '__main__':
b.y()
#文件b
import a
def y():
print('y')
if __name__ == '__main__':
a.x()
执行b的过程:import a->跳转到a.py->import b->继续执行b中下面的代码块 此时如果没有 if __name__ = '__main__'判断,将会执行a.x(),而a.py下面的并没有执行,所以就会找不到a.x(),出行AttributeError: module 'a' has no attribute 'x'