导入模块与包

目录

模块简介

        什么是模块

        模块的分类

        模块的存在形式

模块的使用

        import句式

        import导入模块

        from...import...导入模块

导入文件的扩展用法

判断文件的类型

循环导入

模块的查找顺序

        模块丢失的解决方案

        绝对导入和相对导入

        导包流程


模块简介

什么是模块

python模块是一系列功能的结合体,一个py文件就是一个模块,导入模块可以引用模块中已经写好的功能;在需要的时候可以直接拿来套用,比如说,模块就是已经洗好待下锅的菜,剩下的工作就是什么时候用到了;直接下锅就行了,极大提高了开发效率!

将程序模块化会使整个程序结构更加清晰,维护起来更加方便。单独开发一个小的模块也会更加简单,可以被重复使用,即保证了代码的重要性,又增加了的可维护性。

模块的分类

1.内置的:python中自带的;可以直接调用

2.第三方的:就是别人写好的,需要下载使用

3.自定义的:就是自己写的

模块的存在形式

模块:就是我们自己写的py文件,一个py文件就是一个模块

模块的使用

比如说我要写一个登陆系统;刚好之前写过这个代码;就可以用模块导入方式,form 登陆的py文件 import  登陆的模块,导入到执行文件中;是不是一个句式就省去一打块代码

import句式

使用时需注意:

1.import 在使用阶段模块名py后缀不能加,比如说:import mk,如果写成import mk.py就是错误的

2.要区分开哪个是执行文件,哪一个是导入文件

3.在导入模块的时候,只有第一次会执行,其他的不会执行

  

import导入模块

import  模块名

整个模块的导入流程:

1.运行执行文件,产生执行文件的全局名称空间、

2.运行导入文件(lmp.py)

3.产生导入文件的全局名称空间,并且把导入文件中产生的名字都保存到导入文件的全局名称空间中

4.在执行文件中,产生一个lmp名字指向导入文件的全局名称

from...import...导入模块

from 模块名 import 模块内名字

模块导入流程:

1. 运行执行文件,产生执行文件的全局名称空间
2. 运行lmp.py文件
3. 产生导入文件的全局名称空间,把运行之后产生的名字都保存到导入文件的全局名称空间中
4. 在执行文件中,产生一个名字变量名指向导入文件中得值

导入文件的扩展用法

1.起别名:

import  模块名 as  别名   

比如:import mddddddddddddddddddddddddddddddddddddddd as lmp此时lmp就是改过后的名字

 form 模块名 import 模块内的变量名 as 别名

2.连续导入:

import time
import md
import os
import sys

import time, md, os, sys # 等价于上面4行代码
import 模块名1, 模块名2, 模块名3, 模块名4, 模块名5,
# 推荐还是分开写好一些

3.通用导入:

from lmp import *   #星号可以接收所有导入模块里的变量名,弊端就是看不到具体的内容,使用过程中也不会有提示功能

判断文件的类型

在执行文件中使用__name__,返回结果是__main__ 

如果在导入文件中使用__name__,结果是模块名

文件之间可以相互导入,并不固定哪一个是执行文件,常规用法可以在代码的下方

if __name__ == '__main__':
print('当前是执行文件')

判断哪个是执行文件

循环导入

在一个包中,如果A的完全导入依赖于B的导入,但是B的完全导入又需要导入A,即两个模块之间存在相互导入,那么就会引发循环导入问题,这种现象是坚决不允许的,如果出现这个问题就说明程序设计的不合理

模块的查找顺序

1. 先从内存中查找
2. 再从内置模块中查找
3. 从环境变量中查找sys.path
注意以后的文件名命名坚决不能跟内置模块名重名

模块丢失的解决方案

1.把模块所在的路径添加到环境变量中

 会打印出文件的所有路径,第一个路径就是所在的文件夹

 是文件名是列表类型,那既然是列表类型就可以追加,可以appand()追加文件路径

2.from  文件名 import 对应的py文件名也可以调用

如何让导入模块不轻易报错

如上就是把导入模块的路径,追加到执行文件的目录中;让它能找到对应模块的路径,就不会出现报错飘红,找不到文件的情况

绝对导入和相对导入

绝对导入

始终以执行文件所在的环境变量sys.path为基准

相对导入

句点符(.) 代表的是当前路径,当文件中出现了相对导入的句式,该文件就不能当成执行文件运行了,只能被当成导入文件使用'

导包流程

1. 运行执行文件,产生执行文件的名称空间
2. 运行__init__.py文件, 把该文件中产生的名字保存在名称空间中
3. 在执行文件中,产生一个包名字b指向包的名称空间
 

导包就是在导__init__.py文件,可以直接得到包里面的模块,也可以通过绝对路径一个一个导模块,相比单个导模块直接导包会比较便捷

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值