名字的查找顺序
绝对导入和相对导入
包的使用
正则表示式(独立的语言)
字符组
字符
等…………………………
————————————————————————
名字的查找顺序:
1. 先从内存中查找
2. 再从内置模块中查找
3. 最后去环境变量sys.path中查找
如果以上都找不到,直接报错!
给文件名或者叫模块名起名字的时候一定不能跟内置模块名冲突
——————————————————————————相对导入 和绝对导入
在导入模块的时候,模块的查找始终以执行文件所在的路径为准"""
绝对导入:
它始终是以执行文件所在的sys.path路径为基准查找
相对导入:
(句点符)
代表的是当前路径
代表的是上一级路径
相对导入可以打破始终以执行文件及准的查找顺序
from .ccc import m2
from .ccc.ddd import m2
只要py文件中出现了相对导入语句(.开头的语句),那么,这个文件就不能当成执行文件了,只能被导入、
——————————————————————————包的使用
什么是包?
就是文件夹,其实就是文件夹中包含了一些列的py文件(模块)
—— ———— 包就是一些列模块的组合
包和模块有什么区别呢?
包中有一个特殊文件:__init__.py文件
导包其实就是在导包下的__init__.py文件的
myproject
├─ __init__.py
├─ mypack01
├─ __init__.py
├─ mydir
├─ ab.py
└─ bc.py
————————————————————————————软件开发目录规范
软件开发目录规范就是跟项目中得文件夹起合适的名字的!
项目名:
bin
# 放启动文件的 run.py start.py manage.py...
如果你的启动文件只有一个,也可以不要bin文件夹,可以把启动文件写在项目的跟下
conf (config:配置)
# 放项目的配置文件
settings.py
'''就是一些初始化的数据'''
core # 核心的
# 写一些项目的核心逻辑
src.py
def login():
pass
def register():
pass
lib # library 库
# 这个里面一般写项目使用的公共代码
common.py
def outer():
pass
log
# 日志:就是记录一些在代码运行过程中发生的一些事情,可以是正确的,可以是异常的
log.log
db
# database
跟项目相关的数据存储都存在db、data
api/
# 接口层
# 当你自定义文件夹名字的时候,一定要是见名知意, 一定不能出现中文的
setup.py # 安装模块使用的 python setup.py ...
|-- requirements.txt # 目前用不到--->
taobao
time
os
requests
xml
...
# 命令:
reqeusts == 1.11.1
xml = 1.1.1
# 命令:
|-- README
# 就是项目的说明书
下周要讲的ATM项目用的就是这个
———————————————————————————————正则表达式
正则表达式:
利用一些特殊的符号匹配出我们想要的数据
正则表达式它是一门独立的语言,跟Python、Java等语言没有关系的
所以,如果想在Python中使用正则表达式,需要借助于re模块,内置的
import re
———————————————————————————————字符组
[0123456789] # 0-9之间的数字
[0-9] # # 0-9之间的数字
[A-Z] # # A-Z之间的字母
[a-z] # # a-z之间的字母