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编 ...
随机推荐
- B. Odd Sum Segments CF(分割数组)
题目地址 http://codeforces.com/contest/1196/problem/B B. Odd Sum Segments time limit per test 3 seconds ...
- for循环和增强for循环
- PCB布局注意事项
PCB布局注意事项 1.实现统一功能电路模块中的元件应采用就近集中原则,同时数字电路和模拟电路分开; 2.定位孔.标准孔等非安装孔周围1.27mm 内不得贴装元.器件,螺钉等安装孔周围3.5mm( ...
- 和我一起从0学算法(C语言版)(二)
第一章 排序 第三节 快速排序 快速排序是最常用的排序方法.快排运用的递归方法很有意思.掌握了这种排序方法可以在将来学习递归时更快入门.只是快排的思路与之前的排序方法相比较为复杂,再加担心上我的表达能 ...
- mod_rewrite是Apache的一个非常强大的功能
mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面.下面我详细说说它的使用方法!对初学者很有用的哦! 1.检测Apache是否支持mod_rewrite 通过php提供的p ...
- POJ-2561 Network Saboteur(DFS)
题目: A university network is composed of N computers. System administrators gathered information on t ...
- 黑马IDEA版javaweb_2-1基础加强
今日内容 1. Junit单元测试 2. 反射 3. 注解 ## Junit单元测试: * 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2. 白盒测试:需要写代码 ...
- 寒假day03-python
今天完成了毕设登录注册.填报等功能的界面优化,同时总结了python网络课程的部分知识点 1.修改jupyter notebook默认路径:进入cmd:(1)cd /d F:\(2)jupyter n ...
- Shell语法 【if while for】
[if语法 测试条件 判断语句] 转自:http://lovelace.blog.51cto.com/1028430/1211353 [while for循环] 转自:https://blog.csd ...
- java中常见的json解析方法、库以及性能对比
常见的json解析有原生的JSONObject和JSONArray方法,谷歌的GSON库,阿里的fastjson,还有jackson,json-lib. Gson(项目地址:https://githu ...