上一篇文章中,我们讲到了python模块的介绍与导入方式等,这篇文章接着讲,模块名字的查找顺序与绝对导入和相对导入等内容。
给文件名和模块名取名的时候一定不能够和内置模块名冲突
import sys
print(sys.path)
#'E:\\Python_month_1\\day20', 'E:\\Python_month_1\\day20', 'E:\\PyCharm 2023.2\\plugins\\python\\helpers\\pycharm_display', 'D:\\Python38\\python38.zip', 'D:\\Python38\\DLLs', 'D:\\Python38\\lib', 'D:\\Python38', 'D:\\Python38\\lib\\site-packages', 'E:\\PyCharm 2023.2\\plugins\\python\\helpers\\pycharm_matplotlib_backend'
'''第一行E:\\Python_month_1\\day20就是你当前文件路径'''
1. 把模块所在的路径添加到sys.path中
import sys
sys.path.append(r'E:\Python_month_1\day20\directory')
2. 使用from...import句式
from directory.two import count
from directory import two
print(two.count)
print(count)
在导入模块的时候,模块的查找始终以执行文件所在的路径为准
它始终是以执行文件所在的sys.path路径为基准查找
.(句点符)
. 代表的是当前路径
… 代表的是上一级路径
相对导入可以打破始终以执行文件为查找基础的顺序
只要py文件中出现了相对导入语句(.开头的语句),那么,这个文件就不能当成执行文件了,只能被导入
什么是包?
就是文件夹,其实就是文件夹中包含了一些列的py文件(模块)
包就是一些列模块的组合
包和模块有什么区别呢?
包中有一个特殊文件:init.py文件
我们所使用的所有的程序目录都有一定的规范(有多个文件夹)
1.bin文件夹
用于存储程序的启动文件 start.py
2.conf文件夹
用于存储程序的配置文件 settings.py
3.core文件夹
用于存储程序的核心逻辑 src.py
4.lib文件夹
用于存储程序的公共功能 common.py
5.db文件夹
用于存储程序的数据文件 userinfo.txt
6.log文件夹
用于存储程序的日志文件 log.log
7.interface文件夹
用于存储程序的接口文件 user.py order.py goods.py
8.readme文件(文本文件)
用于编写程序的说明、介绍、广告 类似于产品说明书
9.requirements.txt文件
用于存储程序所需的第三方模块名称和版本
注意我们在创建文件的时候命名可以不完全遵循上面的命名
database文件夹我们后面讲到项目就会被数据库软件代替掉
log文件我们后降到项目也会被专门的日志服务代替掉
import re
phone_number = input('please input your phone number : ')
if re.match('^(13|14|15|18)[0-9]{9}$',phone_number):
print('是合法的手机号码')
else:
print('不是合法的手机号码')
正则表达式:
利用一些特殊的符号匹配出我们想要的数据
正则表达式它是一门独立的语言,跟Python、Java等语言没有关系的所以,如果想在Python中使用正则表达式,需要借助于re模块,内置的import re
[0123456789] # 0-9之间的数字
[0-9] # # 0-9之间的数字
[A-Z] # # A-Z之间的字母
[a-z] # # a-z之间的字母
# 练习题:
匹配:0-9a-zA-Z之间的任意一个
[0-9A-Za-z]
[0-9A-Xa-f]