名字的查找顺序与绝对导入和相对导入

上一篇文章中,我们讲到了python模块的介绍与导入方式等,这篇文章接着讲,模块名字的查找顺序与绝对导入和相对导入等内容。

一、名字的查找顺序

模块名字的查找顺序:先查找内存中>>>>>>>再查找内置模块中>>>>>>>最后去环境变量sys.path中查找,如果以上都没有找到则会报错。

给文件名和模块名取名的时候一定不能够和内置模块名冲突

 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]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值