模块基础知识
面向对象编程 (理论)
- 获取用户名和密码
- 组织固定格式
- 文件操作写入文件
缺陷:一旦需要修复功能则 ‘ 牵一发而动全身 ’
# import 句式
import py文件名(文件后缀.py不需要加)
"""
多次导入相同模块时,只会执行一次
首次导入md模块发生的事:
1.运行导入文件(import句式或.py文件) 产生改文件的全局名称空间
2.运行md.py文件
3.产生呢个md.py全局名称空间 后运行文件内的代码 将产生的代码全部存档于md.py名称空间
4.再倒入文件名称空间产生一个md的名字指向md.py全局名称空间
import句式导入模块之后
通过模块名点的方式就可使用模块中的名字 并且不冲突
"""
money = 999
md.change()
print(money) # 999
print(md.money) # 文件中的代码运行结构
# from...import... 句式
from 文件名 import 文件中的可执行命令
"""
from...import... 多次导入也只会倒入一次:
1.先产生执行文件的全局名称空间
2.执行模块文件 产生模块的局部空间
3.将模块执行之后产生的名字会全部存档于模块名称空间中
4.在执行文件中有一个money(变量名) 执行模块中也有一个
money(变量名) 指向的值
在使用的时候直接写名字即可,当名字重复时
就会产生冲突 使用时就会变成当前名称空间
"""
from md import money,read1,change
money = 999
print(money) # 999

导入模块扩展用法
1.起别名
即可以给模块起别名也可以给模块中某个名字起别名
import newusername as n # 则 n 为 newusername 的别名 调用时使用 n
import newusername import name as n # name的别名为n 调用使用n
2.连续导入
import 模块一,模块二
可连续导入多个模块 但是只有当多个模块功能相似或者属于同一个系列
如果功能不同并且不属于一个系列 那么推荐分行导入:
import 模块名一
import 模块名二
from 模块名一 import 名字1,名字2,名字3
3.通用导入
from md import * # 将模块中所有的名字全部导入(*表示所有)

判断文件类型
判断py文件是作为模块文件还是执行文件:
__name__当文件是执行文件的时候会返回__main__
如果文件是被当做模块导入则返回文件名(模块名)
if __name__ == '__main__':
read1()
"""在pycharm中可以直接敲 main按tab键即可自动补全if判断"""
循环导入
在导入模块的时候如果出现了循环导入的情况
说明程序设计的不合理
不允许出现循环导入的现象!!!
修改方案:
- 调换顺序 将互相导入的句式放在最后
- 函数形式 将导入后的句式放入函数体代码,等所有的数据加载完毕后,再执行
模块导入顺序
1. 先在内存中查找
2. 再在内置模块中查找
3. 最后去 sys.path 系统路径中查找 (自定义模式)
( 最后找不到则报错 )
import sys
print(sys.path) # 结果中第一个元素永远是当前执行文件所在的路径
# 当某个自定义模块查找不到的时候解决方案
1.自己手动将该模块所在的路径添加到sys.path中
import sys
sys.path.append(r'C:\Users\success\PycharmProjects\11.23\userinfo')
2.from...import...句式
from 文件夹名称.文件夹名称 import 模块名
from 文件夹名称.模块名称 import 名字
绝对导入和相对导入
1.绝对导入
指的是使用sys.path 指名道姓的导入模块
2.相对导入
指的是句点符
. :示的是当前文件
.. :表示上一级文件



浙公网安备 33010602011771号