小甲鱼python作业第50讲:模块
# 该模块用于让 Python 支持常量操作class Const:
def __setattr__(self, name, value):
if name in self.__dict__:
raise TypeError('常量无法改变!')
if not name.isupper():
raise TypeError('常量名必须由大写字母组成!')
self.__dict__ = value
import sys
sys.modules = Const()
上面一段最后的
import sys
sys.modules=Const()
是什么意思,网上搜集的比较零散,__name__、sys.modules什么的拆开我懂,这些合在一起我不大懂
原题https://fishc.com.cn/forum.php?mod=viewthread&tid=60578&extra=page%3D2%26filter%3Dtypeid%26typeid%3D398
动动手唯一一题
import sys就是导入 sys 模块
sys.modules=Const()
__name__ 属性当你是主程序运行时候 返回的是 '__main__' ,就表示这个代码自己
所以这里实际上就是 sys.modules['__main__'] ,而我们知道 sys.modules 就是一个全局字典,Python中所有加载到内存的模块都放在sys.modules
所以你这里就是把 Const() 这个方法加入到这个全局字典中,这个字典是python启动后就加载在内存中。
每当你导入新的模块,sys.modules 全局字典都将记录这些模块。
字典 sys.modules 对于加载模块起到了缓冲的作用。当某个模块第一次导入,字典sys.modules将自动记录该模块。
当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。
主要的作用就是最后一句话,你也可以不这样 直接导入在这里完全没毛病~,效率问题,而对我们来说这一个小测试代码谈不上效率
Twilight6 发表于 2020-7-8 16:36
import sys就是导入 sys 模块
sys.modules=Const()
多谢,你讲的非常清楚! 正在卓尼小乱 发表于 2020-7-8 16:59
多谢,你讲的非常清楚!
客气
页:
[1]