首页 > 其他分享 >模块简介

模块简介

时间:2022-10-18 18:46:00浏览次数:55  
标签:__ 文件 简介 py 导入 模块 import

今日内容概要

  • 索引取值与迭代取值的差异
  • 模块简介
  • 导入模块的两种语法句式
  • 模块循环导入问题解决策略
  • 判断文件类型
  • 模块查找顺序
  • 模块的绝对导入与相对导入

1.索引取值与迭代取值的差异

l1 = [1,2,3,4,5]
1.索引取值
索引取值我们可以通过在l1列表后面添加中括号
l1[1] # 2
可以反复取值,重复取值
但是不支持无序的数据类型索引取值
2.迭代取值
只能从前往后取值,并且没办法中途停止取值往回取值
但是有序无序的数据类型都可以通过迭代进行取值

# 我们在使用的时候需要根据实际情况选择取值方法

2.模块简介

模块,简单来说它就是py文件
那么我们看一下它的定义
1.模块的本质
	内部具有一定功能的py文件 ---函数--代码--
我们学习python语言,主要是通过模块功能来体现我们快速开发的能力
模块功能不是其他语言有的
所以在快速开发方面Pyhton语言占据了很大的优势
我们可以直接把别人写好的模块拿来自己使用(白嫖)

2.pyhton模块的表现形式
	1.python文件(py我呢见也可以称之为模块文件)
    2.含有多个py文件的文件夹(按照模块功能的不同划分不同的文件夹(包)存储)
	3.已被编译为共享库或DLL的C或C++扩展
    4.使用C编写并连接到python解释器的内置模块
3. 包
内部含有__init__.py文件的文件夹(python2必须有,pyhton3无所谓)
__name__
其实包就相当于一个文件夹,文件夹内有多个py文件

3.模块的分类

1.自定义模块
	自己别写的py文件,里面有一些功能
2.内置模块
	python解释器中内置的模块
3.第三方模块
	别人写好的模块文件(我们白嫖的)

4.导入模块的两种语法句式

1.import 句式
	'''
	1.先执行文件的名称空间
	2.执行被导入文件的代码将产生的名称被放入的被导入文件的名称空间中
	3.在执行文件的名称空间中产生对应的名字绑定模块名称空间中对应的名字
	4.在执行文件中直接使用名字就可以访问名称空间中对应的名字
	'''
    
    import a  # 运行day 17文件 因为有import a 句式 所以会执行 a.py 文件内的代码
# 所以现在我们的执行文件为day17 模块文件为a.py
# 现在day17 文件与 a.py 文件都是在一个 文件夹内的,只要打开文件夹就可以看到这两个文件
print(a) # <module 'a' from 'D:\\pythonProject\\pythonProject2\\a.py'>

2.from ... import ... 句式
	'''
	1.先产生执行文件的名称空间
	2.执行被导入文件的代码将产生的名字放入被导入文件的名称空间中
	3.在执行文件的名称空间中产生对应的名字绑定模块名称空间中对应的名字
	4.在执行文件中直接使用名字就可以访问名称空间中对应的名字
	'''

import + 文件名 句式

image

from ... import .. 句式

image

5.导入模块补充说明

1.import与from...import..两者优缺点对比
	import 
    因为使用模块名称空间中的名字需要用.加变量名的方式才可以使用
    这样会避免我们因为变量名冲突从而导致的错误
    from .. import ...
    这种句式更加的精确,导入模块名称空间中需要使用的名字,不需要点
    但是容易与执行文件中的名字起冲突
2.重复导入模块
	只有第一次导入模块会执行导入语句,后续导入模块的语句并不会执行
3.起别名
	import a as b
    # 导入的模块a.py 可以使用变量名b加.使用 
    from a import name as b
    # 导入的模块a.py import后面跟的变量名赋值给b 可以直接用b代替它
    from a import as name,func3 as b
    # 导入的模块a.py import后面跟的变量名赋值给b 可以直接用b代替它
4.涉及到多个模块导入
	import a  
    import b 
    # 如果模块的功能相似度不高,推荐使用上面的语法调用
    import a,b
    # 如果模块的功能比较类似,那么可以使用这种方法一起调用

6.循环导入问题

1.循环导入
	两个文件之间彼此导入彼此并且活像使用各自名称空间中的名字, 很容易报错
2.如何解决循环导入问题
	1.确保名字在使用之前就已经准备完毕
    2.我们以后在编写代码的过程中应该尽可能避免出现循环导入

7.判断文件类型

所有的py文件都可以直接打印__name__对应的值
	当py文件为执行文件时,print(__name__) 打印出来的值为__main__
    当py文件是被导入文件的时候print(__name__) 对应的值是模块名字
    if __name__ == '__main__':
    print('哈哈哈 我是执行文件 我可以运行这里的子代码')
   
    上述脚本可以用来区分所在py文件内python代码的执行
    我们主要在模块开开发阶段使用这个功能
    或者是在项目启动问文件时使用此功能
    

8.模块的查找顺序

内存 > 内置 > 执行文件所在的sys.path(系统环境)
我们判断查找顺序时一定要以执行文件为准

9.绝对导入与相对导入

"""
再次强调:一定要分清楚谁是执行文件!!!
	模块的导入全部以执行文件为准
"""
绝对导入
	from a.as.bb.cc.dd import name  # 可以精确到变量名
	from a.as.bb.cc import dd  # 也可以精确到模块名
 	ps:套路就是按照项目根目录一层层往下查找
  
相对导入
	.在路径中表示当前目录
 	..在路径中表示上一层目录
 	..\..在路径中表示上上一层目录
	不在依据执行文件所在的sys.path 而是以模块自身路径为准
    
    from . import b
 	相对导入只能用于模块文件中 不能在执行文件中使用
'''
相对导入使用频率较低 一般用绝对导入即可 结构更加清晰
'''

标签:__,文件,简介,py,导入,模块,import
From: https://www.cnblogs.com/ddsuifeng/p/16803640.html

相关文章

  • 循环导入、文件类型、模块查找、包
    索引取值与迭代取值的差异l1=[11,22,33,44,55]1.索引取值 可以任意位置任意次数取值不支持无序类型的数据取值2.迭代取值 只能从前往后依次取值无法后退......
  • 模块的初识
    今日内容概要索引取值与迭代取值的差异模块简介导入模块的两种句式导入模块的句式补充循环导入问题及解决策略判断文件类型模块的查找顺序模块的绝对导入与相对导......
  • day17模块基础简介
    目录索引取值与迭代取值的差异模块简介模块的分类导入模块的两种句式导入模块补充说明循环导入问题判断文件类型模块的查找顺序绝对导入与相对导入包索引取值与迭代取值的......
  • 模块导入的句式、模块的查找顺序
    今日内容回顾目录今日内容回顾索引取值和迭代取值的差异模块简介导入模块的两种句式导入模块的补充循环导入问题判断文件类型模块的查找顺序绝对导入与相对导入包package......
  • 10月18日内容总结——索引取值和迭代取值的差异、模块
    目录一、索引取值和迭代取值的差异二、模块1、简介1.模块的本质2.模块的历史3.python模块的多种表现形式2、模块的分类3、导入模块的两种语法格式1.import模块名2.from名......
  • python基础:模块简介、模块的语句、绝对导入和相对导入
    python基础:模块简介、模块的语句、绝对导入和相对导入目录一、索引取值与迭代取值的差异二、模块简介三、模块的分类四、导入模块的两种句式1.import句式2.from...import......
  • 模块
    模块py文件都可以被导入或者导入其他py文件,而内部具有一定的功能(代码)的py文件就是模块的一种。python最初因为模块被称之为调包侠,因为程序员觉得python调模块太简单不够......
  • sys.path和模块搜索路径
    当我们导入某个模块文件时,python解释器去哪里找这个文件呢?只有找到这个文件才能读取、装载运行该模块文件。它一般按照如下路径寻找模块文件(按照顺序寻找,找到即停不继续往下......
  • 模块简介
    索引取值与迭代取值的差异l1=[11,22,33,44,55]索引取值:    可以任意位置任意次数取值    不支持无序类型的数据取值迭代取值:    只能......
  • 19、python模块 模块的导入和使用
    目录一、模块1、简介2、模块的表现形式二、模块的分类1、自定义模块2、内置模块3、第三方模块三、导入模块的句式学前须知:1、import句式2、from...import...句式3、补充说......