第050讲: 模块:模块就是程序 | 学习记录(小甲鱼零基础入门学习Python)

(标答出处: 鱼C论坛)
《零基础入门学习Python》

本节知识点:

一、
容器 -> 数据的封装
函数 -> 语句的封装
 类  -> 方法和属性的封装
模块 -> 模块就是程序

二、
在使用模块中的方法时,要加上命名空间:
例如,import os  则要写 os.方法名()

三、导入模块的方法:
(1)import 模块名
(2)from 模块名 import 函数名 (不推荐)
(3)import 模块名 as 新名字

测试题:
在这里插入图片描述
答:python 的模块其实就是程序。
第050讲: 模块:模块就是程序 | 学习记录(小甲鱼零基础入门学习Python)_第1张图片
答:

import hello
hello.hi()

在这里插入图片描述
答:三种

import 模块名
form 模块名 import 方法名
import 模块名 as 新模块名

在这里插入图片描述
答:给不想导入的“隐私”属性名称前面加上“_”。但是要注意的是,如果用import … 导入整个模块,或者显式的用import xx_oo导入某个属性那么,这个隐藏方法就不起作用了。
第050讲: 模块:模块就是程序 | 学习记录(小甲鱼零基础入门学习Python)_第2张图片
答:会打印 “嗨,我是 B 模块~”,因为在第二次导入模块的时候,表b的sayHi把第一次导入的A中的模块覆盖了,这就是命名空间的冲突,所以要避免使用form…import… ,除非非常明确不会造成冲突。
第050讲: 模块:模块就是程序 | 学习记录(小甲鱼零基础入门学习Python)_第3张图片
答:这个是循环嵌套导入的问题,无论运行a.py或b.py哪一个文件都会抛出ImportError异常。这是因为在执行其中某一个文件(a.py) 的加载过程中,会创建模块对象并执行对应的字节码。但当执行第一个语句的时候需要导入另一个文件(from b import y),因此CPU会转而去加载另一个文件(b.py)。此时,之前的文件处于仅导入第一条语句的阶段,因此其对应的字典中并不存在x,故抛出“ImportError:cannot import name ‘x‘ ”异常。

解决方法是直接用import 导入模块。

动动手:
第050讲: 模块:模块就是程序 | 学习记录(小甲鱼零基础入门学习Python)_第4张图片
第050讲: 模块:模块就是程序 | 学习记录(小甲鱼零基础入门学习Python)_第5张图片

#用于让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()

你可能感兴趣的:(第050讲: 模块:模块就是程序 | 学习记录(小甲鱼零基础入门学习Python))