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

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

文章目录

  • 一、名字的查找顺序
        • 模块名字的查找顺序:先查找内存中>>>>>>>再查找内置模块中>>>>>>>最后去环境变量sys.path中查找,如果以上都没有找到则会报错。
      • 以后若是遇到找不到的模块文件可以使用一下两种方法
  • 二、相对导入和绝对导入
      • 绝对导入:
      • 相对导入:
  • 三、包的使用
  • 四、软件开发目录
  • 五、正则表达式

一、名字的查找顺序

模块名字的查找顺序:先查找内存中>>>>>>>再查找内置模块中>>>>>>>最后去环境变量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')

名字的查找顺序与绝对导入和相对导入_第1张图片

2. 使用from...import句式
	from directory.two import count
	from directory import two
	
	print(two.count)
	print(count)

二、相对导入和绝对导入

在导入模块的时候,模块的查找始终以执行文件所在的路径为准

绝对导入:

它始终是以执行文件所在的sys.path路径为基准查找

相对导入:

.(句点符)
. 代表的是当前路径
… 代表的是上一级路径

相对导入可以打破始终以执行文件为查找基础的顺序

只要py文件中出现了相对导入语句(.开头的语句),那么,这个文件就不能当成执行文件了,只能被导入

三、包的使用

什么是包?
就是文件夹,其实就是文件夹中包含了一些列的py文件(模块)
包就是一些列模块的组合

包和模块有什么区别呢?
包中有一个特殊文件:init.py文件
名字的查找顺序与绝对导入和相对导入_第2张图片

四、软件开发目录

我们所使用的所有的程序目录都有一定的规范(有多个文件夹)

	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

名字的查找顺序与绝对导入和相对导入_第3张图片

[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]

你可能感兴趣的:(python,开发语言,正则表达式)