模块基础知识

面向对象编程 (理论)

  1. 获取用户名和密码
  2. 组织固定格式
  3. 文件操作写入文件

缺陷:一旦需要修复功能则 ‘ 牵一发而动全身 ’

# 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 * # 将模块中所有的名字全部导入(*表示所有)

  __all__ = ['money','read1']  # 在被导入的模块文件中可以使用all指定可以被导入使用的名字

 

 

 

 

 判断文件类型

  判断py文件是作为模块文件还是执行文件:

              __name__当文件是执行文件的时候会返回__main__
               如果文件是被当做模块导入则返回文件名(模块名)

 

           if __name__ == '__main__':       
                                read1() 


          """在pycharm中可以直接敲 main按tab键即可自动补全if判断"""

 

循环导入

在导入模块的时候如果出现了循环导入的情况

说明程序设计的不合理

不允许出现循环导入的现象!!!

 

修改方案:

  1. 调换顺序                                                                                                                                                                                                                             将互相导入的句式放在最后
  2. 函数形式                                                                                                                                                                                                                             将导入后的句式放入函数体代码,等所有的数据加载完毕后,再执行

 

 

模块导入顺序

  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.相对导入
    指的是句点符
    .  :示的是当前文件
    .. :表示上一级文件

 

 

posted @ 2021-11-23 19:29  代小白菜  阅读(78)  评论(1)    收藏  举报