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编 ...
随机推荐
- ubuntu搭建web服务器
https://www.linuxidc.com/Linux/2015-11/125477.htm 到“sudo apt-get install libapache2-mod-php5”出现1错误.
- 用Chrome网页获取PDF?
在网页浏览的时候,我常常想保存网页上的内容 这时候有几种选择,要么copy and paste,要么windows自带截图,要么就是借用tencent的截图工具... 但是对于一些用chrome预览的 ...
- 对象创建模式之模块模式(Module Pattern)
模块模式可以提供软件架构,为不断增长的代码提供组织形式.JavaScript没有提供package的语言表示,但我们可以通过模块模式来分解并组织代码块,这些黑盒的代码块内的功能可以根据不断变化的软件需 ...
- thinkCMF图片上传选择已上传图片
1.找到上传图片的模板页面 webuploader.html 在上传文件标签后面 添加 <li class=""><a href="#explorer& ...
- 正确返回Unicode码点大于0xFFFF的字符串长度
如下: function codePointLength(text){ var result = text.match(/[\s\S]/gu); return result? result.lengt ...
- 吴裕雄--天生自然 PHP开发学习:MySQL 插入多条数据
<?php $servername = "localhost"; $username = "root"; $password = "admin& ...
- UML-领域模型-添加关联和属性
1.何谓关联? 关联(association):一个类的全局变量引用了另一个类,就表示关联了这个类 2.何时使用关联? 长时间(需要记住)留存的需要关联:短时间的不需要.比如: 需要关联:老师教那些课 ...
- Insulator|enhancer|LCR|EKLF|CTCF|调控基因印记| A-USF|HATs|ChIP|Chip-seq|PAGE|
表观遗传学 转录因子 基本转录因子:TFIID.A.B.F.E.H. Pol II… 基转录因子具有稳定作用 组织特异性转录因子:GATA.EKLF.Bcl11A… 特异性是在特定组织中的细胞中时与细 ...
- ae基础一
1.导入素材2.整理素材3.创建合成1280*720是高清的模式 也是平时都用的格式 HDV/HDTV 720 251920*1080是超清的模式格式是以16:9的格式显示的 电脑电视机都是用这个比例 ...
- 迅为iTOP-开发板-驱动-can和rfid配置
在迅为开发板中,在 4412,4418 以及 6818 中,有的开发板默认配置 RFID,有的默认配 置 CAN 驱动(IMX6 默认都配置). 本文档介绍如何配置 CAN 和 RFID 的驱动. 截 ...