python与模块的导入方式
今日所得
模块
import
from...import...
循环导入
相对导入
绝对导入
软件开发目录规范
模块
模块:是一系列功能的集合体
模块的三种来源:1.内置模块(Python解释器自带的模块)
2.第三方模块(别人写的)
3.自定义模块(自己写的)
模块的四种表现形式
1.使用Python编写的py文件(py文件也可以称之为模块)
2.已被编译为共享库或DLL的C或C++扩展
3.把一系列模块组织到一起的文件夹(文件夹下有一个__init__.py文件,该文件夹称之为包)包:一系列py文件的结合体
4.使用C编写并连接到Python解释器的内置模块
Python解释器启动时加载的模块缓存 > 同级目录 > sys.path(环境变量)
使用别人编译好的模块,可以极大的提高开发效率
使用自己编译的模块,当程序比较庞大的时候,你的项目不可能只在一个py文件中,当多个文件需要使用相同的方法时,可以将该方法放到一个公用的py文件中,有文件需要使用时可以直接调用
import
这是Python在调包时用到的关键字
import time name = 'chen'
start = time.time()
time.sleep(2)
print(name)
end = time.time()
print(end - start) """
右键运行执行文件,会首先创建一个执行文件的名称空间
让后首次导入time模块
1.执行time.py文件
2.运行time.py的代码将产生的值和名字放入time的名称空间中
3.执行文件会得到一个指向time名称空间的名字(time)
多次导入不会再执行模块文件,会沿用第一次导入的结果
"""
from...import...
在执行文件中运行
首先创建执行文件的名称空间
首次导入模块
1.运行模块
2.执行模块将产生的名字和值放入模块的名称空间
3.直接拿到import指向的模块中某个值的名字
缺点
1.访问模块中的名字不需要加模块名前缀
2.在访问模块中的名字可能会与当前执行文件中的名字起冲突
循环导入
在运行执行文件时,导入一个模块,导入的模块中又导入了其他模块,来来回回的互相导入
如果出现了循环导入问题,就说明是你的程序设计不合理,循环导入问题应该在程序的设计阶段就应该避免
解决循环导入问题的方式
1.将循环导入的句式写在文件最下方
2.在函数内导入模块
__name__的用法
当该文件被当做执行文件时__name__打印的结果是__main__
当文件被当做模块导入的时候__name__打印的结果是模块名(没有后缀)
模块的查找顺序
1.先从内存中找
2.再去内置中找
3.最后去sys.path中找(环境变量)
要分清楚谁是执行文件,谁是被导入文件
print(sys.path)是一个大列表,第一个路径就是执行文件所在的路径
模块的绝对导入
绝对导入必须依据执行文件所在的文件夹路径为准
1.绝对导入无论是在执行文件中还是被导入文件中都合适
相对导入
.代表的当前路径
..代表的上一级路径
...代表的上上一级路径
相对导入不能再执行文件中使用,使用相对导入就不需要考虑执行文件是谁,只需要知道模块与模块之间路径关系
"""
项目名
bin文件夹
start.py项目启动文件
conf文件夹
setting.py项目配置文件
core文件夹
src.py项目核心逻辑文件
db文件夹
数据相关
lib文件夹
common.py项目所有用到的公共的功能
log文件夹
log.log项目的日志文件
readme文本文件 介绍项目
"""
bin文件夹
start.py文件
import sys
import os BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# __file__是当前文件的位置
sys.path.append(BASE_DIR)
"""
pycharm会自动将你新建的最顶层的目录自动添加到环境变量中
上面这两句话 不是针对你的 是针对下载你这个软件的用户
"""
from core import src if __name__ == '__main__':
src.run()
python与模块的导入方式的更多相关文章
- 17.python自定义模块的导入方式
1.直接用import导入 最后运行main.py可以看到命令行窗口输出了一句:你好,这样就完成了. 2.通过sys模块导入自定义模块的路径path 3.在环境变量中找到自定义模块 这个方法原理就是利 ...
- 模块的概念、模块的导入方式【IMPORT 模块名、FROM 模块 IMOPRT 功能】、模块的搜索路径、链式导入&循环导入
今日内容 1. 模块:模块的概念 2.导入的方式:import from import 3. 环境变量:sys.path 4. 导入模块的顺序 5. 循环导入:模块间互相导入 模块 常见的四种模块: ...
- 第10.9节 Python子包的导入方式介绍
在<第10.8节 Python包的导入方式详解>详细介绍了包的导入方式,子包也是包,子包的导入与包的导入方法上没有本质区别,但二者还是有所不同.本节对照二者的方式介绍子包与包导入的关系: ...
- python之模块的导入
今天在做一个项目的时候卡在模块导入这个点上了.赶紧回头总结一下 一.被导入的文件和工作的脚本在一个目录下 1.导入一个.py文件里的功能或参数(导入模块) 先看一下目录结构: module里有两个功能 ...
- python第三方模块的导入
模块搜索路径 当我们尝试加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错: >>> import module1 Traceback (most ...
- python学习笔记:模块——自定义模块的3种导入方式
一.定义 模块就是用一堆的代码实现了一些功能的代码的集合,通常一个或者多个函数写在一个.py文件里,而如果有些功能实现起来很复杂,那么就需要创建n个.py文件,这n个.py文件的集合就是模块.如果不懂 ...
- 11、python模块的导入
前言:本文主要介绍python模块的导入,包括模块的定义.模块的作用.导入方式以及模块的搜索路径. 一.模块的定义 python模块(module),简单来说就是一个python文件,以.py结尾,文 ...
- 第10.8节 Python包的导入方式详解
一. 包导入与模块导入的关系 由于包本质上是模块,其实对模块的许多导入方法都适用于包,但由于包的结构与模块有差异,所以二者还是有些区别的: 对包的导入,实际上就是包目录下的__init__.py文件的 ...
- Python之模块和包
一.模块 1.什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...
随机推荐
- h5-自定义视屏播放器
1.html代码 <h3 class="playerTitle">视屏播放器</h3> <div class="player"&g ...
- 每天一杯C_C89、C99、C11等之C语言标准
C语言的伟大之处在于C语言还是一个国际标准,这只“无形的手”掌控者其他派生语言和计算机的各个方面.起关于C语言被发明之后,ANSI和ISO相继发布关于C语言的标准.关于C90和C99,C89和C99容 ...
- 17.3.12----math模块
1----math模块提供很多的数学运算功能: math.pi 圆周率 math.e 那个自然常熟就是e^x,的这个e math.ceil(i) 对i向上取整 math.floor(i) ...
- vue实现简单的过滤器
html片段: <script src="https://unpkg.com/vue"></script> <div id="app&quo ...
- 吴裕雄--天生自然ShellX学习笔记:Shell 基本运算符
Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 ...
- 吴裕雄--天生自然 PHP开发学习:表单和用户输入
<html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</t ...
- Python dict 和 list 转换
这里有个dict d1 = { 'en':'英语', 'cn':'中文', 'fr':'法语', 'jp':'日语' } 使用d1.keys()或 d1.values() 可以提取出values 和k ...
- p2p gossip 结构化 非结构化
p2p P2P中文名字叫对等网络,网络中节点地位一致. QQ其实不算P2P,因为QQ利用了中央服务器. Hbase这样的分布式系统,因为有Hmaster节点,也不算是P2P网络: cas ...
- JavaScript详解(一)
简介: Javascript是一个脚本语言,弱类型的编程语言,简称js,被称为网站开发的行为.它的作用是增加页面特效.前后台交互以及应用于后台开发.它即可写在HTML的script标签里,也可写在外部 ...
- Redis分布式锁前世今生
1.redis锁前世即基于单Redis节点的分布式锁,诸如setkey value px milliseconds nx 前世者,必将经历种种磨砺,才能稍微符合一些主流.推荐自测非常好用的redis工 ...