绝对、相对导入以及包和常见内置模块

一、绝对导入与相对导入

我们都知道绝对路径与相对路径 现在我们想要了解的是绝对导入与相对导入
其概念其实跟路径一个道理 绝对是指定到某一个文件 相对是指定到某一个文件夹

补充知识:
只要涉及到用到模块的导入 那么系统路径sys.path永远以执行文件为准
.在路径中意思是当前路径 ..在路径中意思是上一层路径 ../..在路径中意思是上上一层路径

	绝对导入
		绝对路径就是我们说到的指定到特指的文件
		from Desktop import Join							来自桌面的Join文件
		from Desktop.Game.Login import exe 					来自桌面文件夹Game子文件夹Login里面的exe文件 
		其实就是以执行文件所在的sys.path为起始路径 往下一层层查找
		如果有文件不在同一级别的文件夹路径,想使用直接把绝对路径添加到执行文件sys.path里面即可
		
	相对导入
		相对导入就是给到路径文件夹了 但是不知道它哪个文件夹里面
		from Desktop import new			   					只给到文件夹Desktop不知道new在那个字文件里面
		但是相对导入只能在模块文件中使用 不能在执行文件中使用
		相对导入在项目比较复杂的情况下 可能会出错所以推荐使用绝对导入 少用相对导入

在这里插入图片描述

二、包的概念

注意这个包跟我们平常理解的肉包子菜包子lv包包不是一个包哈 所以现在带大家了解一下python的包

	如何理解包
		从我们专业的角度来看 创建一个文件夹里面含有__init__.py的文件夹叫包
		从我们小白的觉度来看 就是一个文件夹 啥也不是
		
	包的作用
		它的作用很容易理解 就相当于我们电脑 C盘主要放系统文件 D盘主要放500G的学习资料
		内部可以存放多个py文件(模块文件)  仅仅是为了更加方便的管理模块文件
		
	具体使用
		import 包名
		注意导入包名主要看__init__.py文件 就相当于这个文件夹的父文件夹
		这个文件里面有什么文件你才能用什么文件 导入包里面其他py 文件会直接报错的
		其实也可以跨过__init__.py直接导入包里面的模块文件 那就是直接指名道姓 导入包里面的模块

注意包跟文件夹长的不一样

三、编程思想的转变

经过我们这一个月的学习也从小白算是刚刚进入入门了 也对编程有一个转变了 现在说说这个过程 总共分为三个阶段

	小白阶段
		刚开始学我们只会按照需求从上往下堆代码跟拉面条似的		单文件
		
	函数阶段
		将代码按照不同的功能封装成不同的函数					单文件
		
	模块阶段
		根据不同的功能拆分不同的模块文件						多文件


	小白阶段相当于我们将所有娱乐学习文件放在C盘里面并且还不分类不堪入目
	函数阶段相当于将所有的文件在C盘里面分类好了 游戏是游戏 学习是学习
	模块阶段相当于将所有的文件按照类型分类到其他DEFG盘
	这就是我们一个思想的转变 目的就是为了更加方便快捷的管理资源

在这里插入图片描述

四、软件开目录规范

	针对上述的第三个阶段 分模块文件多了之后还需要有文件夹
	我们所使用的所有的程序目录都有一定的规范(有多个文件夹)

	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文件我们后降到项目也会被专门的日志服务代替掉

在这里插入图片描述

在这里插入图片描述

五、常见内置模块


		1.collections模块
			1>.namedtuple
				from collections import namedtuple						导入模块namedtuple
				Point = namedtuple('LebronJames', ['号码1', '号码2'])	按照位置输入K
				res = Point(6, 23)										按照位置顺序输入V
				print(res)
				
				'''中括号内可以输入多个值以逗号隔开即可 也可以多次赋值 扑克牌原理来至于此'''
				
				from collections import namedtuple
				p = namedtuple('扑克牌', ['花色', '点数'])
				res1 = p('♥', '6')
				res2 = p('♠', '6')
				res3 = p('♦️', '6')
				res4 = p('♣️', '6')
				
				print(res1)
				print(res2)
				print(res3)
				print(res4)

在这里插入图片描述


			2>.deque		双端队列
				from collections import deque
				A = deque()				
				A.append(111)							向空集合中追加111
				A.append(222)							向空集合中追加222
				A.append(333)							向空集合中追加333
				A.appendleft(444)						向空集合中左边追加444
				print(A)
				print(A[3])								索引取值第三个数据值
				

在这里插入图片描述


			3>.orderedict	 有序字典
				from collections import OrderedDict
				d = dict([('a', 1), ('b', 2), ('c', 3)])			我们正常的无需字典
				print(d)
				od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])	模块里面的有序字典
				print(od)											验证办法就是从cmdpython2.7中验证	
				

在这里插入图片描述


			4>.counter
				我们已知一个字符串我们想知道里面各个字符出现了多少次!
				res = 'abcdeabcdabcaba'		
							
				普通方法:
						res = 'abcdeabcdabcaba'
						new_dict = {}						新建一个空列表
							for i in res:					循环字符串
							    if i not in new_dict:		如果不在空列表里面
							        new_dict[i] = 1			列表新一个
							    else:
							        new_dict[i] += 1		如果在+1
							print(new_dict)
				
				counter:
						from collections import Counter		导入模块
						res = 'abcdeabcdabcaba'				
						res1 = Counter(res)					使用counter统计词频
						print(res1)		
											

在这里插入图片描述

		2.time模块
			1>.time.time()		时间戳
				import time
				print(time.time())
			
			2>.time.gmtime()	结构化时间
				import time
				print(time.gmtime())
				
			3>.time.strftime()	格式化时间
				import time
				print(time.strftime('%Y-%m-%r %H-%M-%S'))
				print(time.strftime('%Y-%m-%r %X'))			%X偷懒缩写时分秒
				'''注意前面首字母大写年 后面月日小写 时分秒大写 都是因为单词缩写首字母开头'''

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文仅讲了导入路径、包、开发规范、常见内置模块的个人理解,技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点赞收藏+关注 谢谢支持!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LoisMay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值