鱼C论坛

 找回密码
 立即注册
查看: 1110|回复: 3

[已解决]小甲鱼python作业第50讲:模块

[复制链接]
发表于 2020-7-8 16:27:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# 该模块用于让 Python 支持常量操作
class Const:   
    def __setattr__(self, name, value):
        if name in self.__dict__:
            raise TypeError('常量无法改变!')
            
        if not name.isupper():
            raise TypeError('常量名必须由大写字母组成!')

        self.__dict__[name] = value

import sys
sys.modules[__name__] = Const()


上面一段最后的
import sys
sys.modules[__name__]=Const()
是什么意思,网上搜集的比较零散,__name__、sys.modules什么的拆开我懂,这些合在一起我不大懂
原题https://fishc.com.cn/forum.php?m ... peid%26typeid%3D398
动动手唯一一题
最佳答案
2020-7-8 16:36:48


import sys  就是导入 sys 模块

sys.modules[__name__]=Const()

__name__ 属性当你是主程序运行时候 返回的是 '__main__' ,就表示这个代码自己

所以这里实际上就是 sys.modules['__main__'] ,而我们知道 sys.modules 就是一个全局字典,Python中所有加载到内存的模块都放在sys.modules

所以你这里就是把 Const() 这个方法加入到这个全局字典中,这个字典是python启动后就加载在内存中。

每当你导入新的模块,sys.modules 全局字典都将记录这些模块。

字典 sys.modules 对于加载模块起到了缓冲的作用。当某个模块第一次导入,字典sys.modules将自动记录该模块。

当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。

主要的作用就是最后一句话,你也可以不这样 直接导入在这里完全没毛病~,效率问题,而对我们来说这一个小测试代码谈不上效率


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-8 16:36:48 | 显示全部楼层    本楼为最佳答案   


import sys  就是导入 sys 模块

sys.modules[__name__]=Const()

__name__ 属性当你是主程序运行时候 返回的是 '__main__' ,就表示这个代码自己

所以这里实际上就是 sys.modules['__main__'] ,而我们知道 sys.modules 就是一个全局字典,Python中所有加载到内存的模块都放在sys.modules

所以你这里就是把 Const() 这个方法加入到这个全局字典中,这个字典是python启动后就加载在内存中。

每当你导入新的模块,sys.modules 全局字典都将记录这些模块。

字典 sys.modules 对于加载模块起到了缓冲的作用。当某个模块第一次导入,字典sys.modules将自动记录该模块。

当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。

主要的作用就是最后一句话,你也可以不这样 直接导入在这里完全没毛病~,效率问题,而对我们来说这一个小测试代码谈不上效率


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-7-8 16:59:35 | 显示全部楼层
Twilight6 发表于 2020-7-8 16:36
import sys  就是导入 sys 模块

sys.modules[__name__]=Const()

多谢,你讲的非常清楚!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 17:00:04 | 显示全部楼层
正在卓尼小乱 发表于 2020-7-8 16:59
多谢,你讲的非常清楚!

客气
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 02:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表