模块:

模块的分类:

第三方模块/扩展模块:没在安装python解释器的时候安装的那些功能

自定义模块:你写的功能如果是一个通用的功能,那你就把它当做一个模块

内置模块:安装python解释器的时候跟着装上的那些方法

什么是模块:

  • 有的功能开发者自己无法完成,这样的话需要借助已经实现的函数\类来完成这些功能
  • 你实现不了的功能都由别人替你实现了
  • 操作系统打交道
  • 和时间
  • 1000取随机数
  • 压缩一个文件
  • 和网络通信
  • 别人写好的一组功能 文件夹/py文件/C语言编译好的一些编译文件

为什么要有模块?

  • 分类 管理方法
  • 节省内存
  • 提供更多的功能

模块的创建和导入;

import my_module  要导入一个py文件的名字,但是不加.py后缀名
import my_module  模块的名字必须要满足变量的命名规范
一般情况下 模块都是小写字母开头的名字

PEP8规范:

所有的模块导入都应该尽量放在这个文件的开头
模块的导入也是有顺序的
先导入内置模块
再导入第三方模块
最后导入自定义模块

import

import 的时候发生了什么
在import的时候命名空间的变换
重命名 as
一行导入多个模块

from ... import ...

from import 的时候发生了什么 仍然相当于执行了整个py文件
在import的时候命名空间的变换

重命名 as
一行导入多个名字 导入了什么 就能使用什么 不导入的变量 不能使用 不导入并不意味着不存 而是没有建立文件到模块中其他名字的引用
from 模块 import *
* 和 __all__ 的相关性 __all__可以控制*导入的内容

from my_module import *
login()
from my_module import name
print(name)

模块相关的其他知识

1.把模块当成脚本运行 : 从本模块中反射本模块中的变量

if __name__ == '__main__':
所有不需要调用就能执行的内容

import sys
getattr(sys.modules[__name__],'要反射的变量名')

2.模块搜索路径 sys.path

模块没导入之前在哪儿? 在硬盘上

安装python
python整个包的结构不变
它会记录一个安装目录
其他所有目录都是根据安装目录来写死的
除了你当前运行的脚本所在的目录和pycharm在你打开项目的时候给你添加进来的项目根目录
剩余所有都是python内置的目录
内置模块的导入
第三方模块的导入
内置模块的导入和第三方模块的导入都不需要你操心了
自定义的模块能否被导入
看sys.path当中 是否存在你要导入的文件 所在的目录

总结:
模块的搜索路径全部存储在sys.path列表中,导入模块的顺序,是从前到后找到一个符合条件的模块就立即停止不再向后寻找
如果要导入的模块和当前执行的文件同级,直接导入即可
如果要导入的模块和当前执行的文件不同级,需要把要导入模块的绝对路径添加到sys.path列表中

3.pyc编译文件

python的执行
解释 - 编译
当一个文件作为一个脚本被导入的时候
就会在这个文件所在的目录的__pycache__下生成一个编译好的文件
为了之后导入这个文件的时候直接读这个编译好的pyc文件就可以
可以节省一些导入时候的时间

4.重新加载模块 已经导入的模块即便被修改在程序执行过程中也不会生效

importlib.reload(aaa) # 表示重新加载
reload这种方式可以强制程序再重新导入这个模块一次
非常不推荐你使用

5.模块的循环引用 - 不允许

在模块的导入中 不要产生循环引用问题
如果发生循环导入了
就会发现明明写在这个模块中的方法,确偏显示找不到

    
												

python-模块详解的更多相关文章

  1. python模块详解 | selenium(持续更新中)

    目录: 关于selenium Selenium 安装Selenium 安装浏览器驱动 配置环境变量 selenium方法详解 定位元素 元素操作 浏览器操作 鼠标事件 浏览器事件 设置元素等待 多表单 ...

  2. python模块详解 random os

    random模块 常用方法 random.random() 随机产生一个小于1的浮点数 import random print(random.random()) #0.4153761818276826 ...

  3. python模块详解

    什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...

  4. python模块详解 sys shutil

    sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sy ...

  5. python模块详解 | shutil

    简介: shutil是python的一个内置模块,提供了许多关于文件和文件集合的高级操作,特别提供文件夹与文件操作.归档操作了支持文件复制和删除的功能. 文件夹与文件操作: copyfileobj(f ...

  6. 小白的Python之路 day5 python模块详解及import本质

    一.定义 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能) 本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻辑上组织模块 ...

  7. Python 模块详解及import本质

    同在当前目录下的模块和包导入 模块定义 本质就是.py结尾的python文件. 用来从逻辑上组织python代码(变量,函数,类,逻辑) 文件名: test.py;  对应的模块名 : test 模块 ...

  8. Python模块详解以及import本质,获得文件当前路径os.path.abspath,获得文件的父目录os.path.dirname,放到系统变量的第一位sys.path.insert(0,x)

    模块介绍 1.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻 ...

  9. python模块详解 logging

    打印日志的五个级别: import logging logging.debug('test debug') logging.info('test info') logging.warning('tes ...

  10. python模块详解 re

    摘自:python中的正则表达式(re模块) 一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被 ...

随机推荐

  1. 2019.3.26 为什么说HTTP是无状态协议/无连接

    无状态 1.协议对于事务处理没有记忆能力 2.对同一个url请求没有上下文关系 3.每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求时无直接关系的,它不会受前面的请求应答情况直接影响, ...

  2. ionic 入门创建第一个应用demo

    一.ionic卸载 1.清除旧版本的ionic框架 npm uninstall -g ionic npm uninstall -g cordova npm cache clear npm cache ...

  3. 使用Fiddler监控来自手机客户端的请求

    环境配置组成: 1 手机 2 安装Fiddler的PC 设置要点: 1 手机和PC应在同一个局域网内 我的做法是:PC安装WIFI热点,手机连接热点上网 PC的IP是192.168.95.1  手机的 ...

  4. 404 Note Found 队-课堂实战-项目UML设计

    目录 团队信息 分工选择 课上分工 课下分工 ToDolist alpha版本要做的事情 燃尽图 UML 用例图 状态图 活动图 类图 部署图 实例图 对象图 时序图 包图 通信图 贡献分评定 课上贡 ...

  5. flink统计根据账号每30秒 金额的平均值

    package com.zetyun.streaming.flink; import org.apache.flink.api.common.functions.MapFunction;import ...

  6. LINUX下安装pcre出现WARNING: 'aclocal-1.15' is missing on your system错误的解决办法

    1.下载安装包 wget https://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz 2.解压 tar -xzvf automake-1.15.tar. ...

  7. JSON定义及应用

    1 什么是JSON? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) 是轻量级的文本数据交换格式,JSON 比 XML 更小.更快,更易解析 ...

  8. code#5 P2 棋子

    棋子   时间限制: 1.0 秒 空间限制: 512 MB 相关文件: 题目目录 题目描述 棋盘从左到右被分割成 n(n≤1000) 个格子,从左到右编号为1,2,...,n.棋盘上有 m(m≤n)  ...

  9. ABAP术语-ABAP 术语发布结束

    ABAP 术语发布结束 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/21/1116236.html 经历了大约三个月,终于把 BC417 ...

  10. 微信JSSDK的使用

    微信JS-SDK 1.在微信公众平台(https://mp.weixin.qq.com/)注册个公众号,获取APPID和AppSecret 2.获取access_token(需要在公众平台中设置获取a ...