文章目录

  • 一、模块介绍
  • 二、导入模块的基本格式
  • 三、两种格式的优缺点
  • 四、补充知识
  • 五、循环导入问题
  • 六、判断文件类型
  • 七、模块的查找顺序


一、模块介绍

1.如何理解模块
			模块可以看成一个完整的功能非常强的大代码体 使用了模块就相当于你也有这个功能了
			使用模块编程就相当于站在巨人的肩膀上(智能语音 人工智能机器学习......)
		
		2.模块分类
			1>.内置模块
				内置模块就是python自带的可以直接调用的模块
					eg:import time
						time.sleep(3)	让计算机等待三秒再运行
			2>.自定义模块
				自定义模块肯定就是自己写出来的模块了
					eg:	注册功能 登录功能......
			3>.第三方模块
				第三方就是大佬们将已经写好了的发布在网上我们之间直接CV战士即可
					eg:	图像识别	图形可视化 语音识别

		3.模块的表现形式
			1>.py文件(py文件也可以称之为是模块文件)
			2>.含有多个py文件的文件夹(按照模块功能的不同划分不同的文件夹存储)
			3>.已被编译为共享库或DLL的c或C++扩展(了解)
			4>.使用C编写并链接到python解释器的内置模块(了解)

二、导入模块的基本格式

基本格式1	import句式	
			import LebronJames					导入LBpy文件
			print(LebronJames.point)			通过句点拿到LB里面的变量名
			print(LebronJames.read1)			通过句点拿到LB里面的变量名
			LebronJames.read1()					通过句点拿到LB里面的函数调用

		基本格式2	from...import...句式
			from LebronJames import point		指名道姓的导入point变量名
			print(point)						不用通过句点即可直接使用
			point = 62323						新建一个变量名point
			print(point)						这时候就是62323了把之前的关系断了

python 自己编写模块 python模块_python

三、两种格式的优缺点

import
			优点:可以通过md句点方式使用到模块里面所有的名字 并切不会冲突
			缺点:md什么都可以点 有时候并不想让所有的名字都能被使用
		
		from....import
			优点:可以指定出自己想要的那单独一个名字 不用添加md前缀
			缺点:名字及其容易产生冲突(绑定关系被修改)

四、补充知识

1.重命名
			1>.当导入多个模块名字冲突的时候
				import LebronJames as LB
				通过 后面加上as和新的名称即可直接句点调用
				from LebronJames import point as LB
				也是通过后面加上as新的名称就可以直接调用
				
			2>.原有的模块文件名太长复杂可读性不强
				import LBLBLBLBLBLB as LB
				通过 后面加上as和新的名称即可直接句点调用

		2.导入多个名字
			1>.import LB,point,read1,read2
				方式1建议多个模块功能相同功能才能适应 不相似尽量分开导入
				import either 其他功能模块
				
			2>.from LB import point,read1,read2
				方式二导入方式是推荐使用的 因为多个名字出自于一个模块文件
				
		3.全导入
			需要使用模块名称空间中很多名字 并且只能使用from...import句式
			from LebronJames import *  			 *表示所以名字
			ps:针对*号的导入还可以控制名字的数量
			在模块文件中可以使用__all__ = [字符串的名字]控制*能够获取的名字
			
						控制名称仅限制*号全部的模式下使用

python 自己编写模块 python模块_开发语言_02

五、循环导入问题

1.如何理解循环导入
			循环导入就是两个文件彼此导入对方的名字
			
		2.循环导入容易出现报错现象
			使用彼此的名字可能是在没有准备好的情况下就使用了
			
		3.如何解决循环导入保存现象
			在调用彼此的名字之前就定义好名字 相当于函数 先定义后调用的原理

六、判断文件类型

所有的py文件中都自带一个__name__内置名
			当py文件是执行文件的时候 __name__的结果是__main__
			当py文件是被导入文件的时候 __name__的结果是模块名(文件名)

python 自己编写模块 python模块_变量名_03

七、模块的查找顺序

1.导入一个文件 然后在导入过程中删除该文件 发现还可以使用
			import LebronJames						导入文件								
		    import time								导入时间模块
		    time.sleep(15)							等待15秒在运行
		    print(LebronJames.point)				打印LB里面的point

		'''该过程中删除了文件 但是结果还是不报错 如果再来一次 就会报错了 '''

		2.创建一个跟内置模块名相同的文件名
			import time								导入时间模块
			print(time.time())						获取当前时间戳
			from time import name					导入相同的名字
			print(name)							
			'''如果命名跟原本内置的模块一样则最终结果报错 所以禁忌取相同的名称'''

		3.导入模块的时候一定要知道谁是执行文件 所有的路径都是参照执行文件来的	
		  当我们模块内容不在一个层级里面 我们可以使用添加路径来寻找即可
		  import sys
		  sys.path.append(r'/Users/macbookpro/PycharmProjects/import/LebronJames.py')
		  import LebronJames
		  print(LebronJames.point)

		4.主要查找顺序
			先从内存空间中查找>>>再从内置模块中查找>>>最后取sys.path查找相当于我们之前学习
			的环境变量	如果上述三个地方都找不到 那么就会之直接报错

python 自己编写模块 python模块_python 自己编写模块_04