名字的查找顺序
在 Python 中,模块名字的查找顺序是:
- 当前目录
- 环境变量 pythonpath 所包含的目录
- Python 默认安装路径下的目录
如果同一个模块名字在多个目录下都存在,Python 会按照上述顺序优先使用在前面的那个目录下的模块。同时,Python 可以使用 sys.path 查看模块搜索路径。
找不到文件路径怎么办?
1. 把模块所在的路径添加到sys.path中
import sys
sys.path.append(r'D:\Python27\day20\aaa\bbb')
2. 使用from...import句式
from aaa.bbb.ccc import m1
from aaa.bbb.ccc.m1 import f1
f1()
m1.f1()
相对导入和绝对导入
"""在导入模块的时候,模块的查找始终以执行文件所在的路径为准"""
绝对导入:
它始终是以执行文件所在的sys.path路径为基准查找
相对导入:
"""
.(句点符)
. 代表的是当前路径
.. 代表的是上一级路径
"""
# 相对导入可以打破始终以执行文件及准的查找顺序
from .ccc import m2
from .ccc.ddd import m2
只要py文件中出现了相对导入语句(.开头的语句),那么,这个文件就不能当成执行文件了,只能被导入
包的使用
什么是包?
就是文件夹,其实就是文件夹中包含了一些列的py文件(模块)
# 包就是一些列模块的组合
包和模块有什么区别呢?
包中有一个特殊文件:__init__.py文件
"""导包其实就是在导包下的__init__.py文件的!"""
软件开发目录规范
为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要。软件的目录规范并无硬性标准,只要清晰可读即可,假设你的软件名为foo,笔者推荐目录结构如下:
Foo/
|-- core/
| |-- core.py
|
|-- api/
| |-- api.py
|
|-- db/
| |-- db_handle.py
|
|-- lib/
| |-- common.py
|
|-- conf/
| |-- settings.py
|
|-- run.py
|-- setup.py
|-- requirements.txt
|-- README
简要解释一下:
• core/: 存放业务逻辑相关代码
• api/: 存放接口文件,接口主要用于为业务逻辑提供数据操作。
• db/: 存放操作数据库相关文件,主要用于与数据库交互
• lib/: 存放程序中常用的自定义模块
• conf/: 存放配置文件
• run.py: 程序的启动文件,一般放在项目的根目录下,因为在运行时会默认将运行文件所在的文件夹作为sys.path的第一个路径,这样就省去了处理环境变量的步骤
• setup.py: 安装、部署、打包的脚本。
• requirements.txt: 存放软件依赖的外部Python包列表。
• README: 项目说明文件。
除此之外,有一些方案给出了更加多的内容,比如LICENSE.txt,ChangeLog.txt文件等,主要是在项目需要开源时才会用到,请读者自行查阅。
正则表达式
正则表达式它是一门独立的语言,跟Python、Java等语言没有关系的
所以,如果想在Python中使用正则表达式,需要借助于re模块,内置的
import re模块
end