首页 > 其他分享 >模块的初识

模块的初识

时间:2022-10-18 18:44:33浏览次数:53  
标签:__ 文件 导入 名字 初识 模块 import

今日内容概要

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

今日内容详细

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

l1 = [11,22,33,44,55]
1.索引取值:
	可以任意位置任意次数取值
   	不支持无序类型的数据取值
2.迭代取值
	只能从前往后依次取值无法后退
 	支持所有类型的数据取值(有序无序都可以)
注意:两者具体使用需要结合实际的情况,不是绝对哪个取值比较好的

模块简介

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

模块的分类

1.自定义模块
	自己本身写的模块文件
2.内置模块
	python解释器提供的模块
3.第三方模块
	别人写的模块文件(python背后真正的大佬)

导入模块的两种句式

"""
特别注意:
	1.一定要明白谁是执行文件,谁是被导入文件
	2.以后开发项目的时候py文件名称一般是纯英文
	3.导入模块文件不需要填写后缀名
"""
1.import句式
	以import a为例研究底层原理
  """
 	1.先产生执行文件的名称空间
	2.执行被导入文件的代码将产生的名字放入被导入文件的名称空间中
	3.在执行文件的名称空间中产生一个模块的名字
	4.在执行文件中使用该模块名点的方式使用模块名称空间中所有的名字
  """

image

2.from...import..句式
	以from a import name,func1为例研究底层原理
   """
   1.先产生一个执行文件的名称空间
   2.执行被导入文件的代码将产生的名字放入被导入文件的名称空间中
   3.在执行文件的名称空间中产生对应的名字绑定模块名称空间中对应的名字
   4.在执行文件中直接使用名字就可以访问名称空间中对应的名字
   """

image

导入模块补充说明

1.import 与 from...import..两者优缺点
	import
    由于使用模块名称空间中的名字都需要模块名点名的方式才可以用,所以不会轻易的把被执行文件中的名字替换掉
    from...import..句式
    指名道姓的导入模块名称空间中需要使用的名字,不需要模块名点
    很容易跟执行文件中名字冲突
2.重复导入模板
	解释器只会导入一次,后续重复的导入语句并不会执行
3.起别名
	import 模块文件名 as 可以给一个更简单的名字方便调用
   from 模块文件名 import 模块中很长的名字 as 给名字一个简单的的
	多名字简单的写法;
    from a import name as m,funcl as f1
4.涉及到多个模块导入
	import a
	import b
 如果模块功能相似度不高,推荐使用上面的,相似度高可以使用下面的
	import a,b

循环导入问题

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

判断文件类型

所有的py文件都可以直接打印__name__对应的值
	当py文件是执行文件的时候__name__对应的值是__main__
 	当py文件是被导入的时候__name__对应的值是模块名
if __name__ == '__main__':
    print('哈哈哈 我是执行文件 我可以运行这里的子代码')
上面的脚本可以用来区分多在py文件内python代码的执行


使用场景:
	1.模块开发阶段
 	2.项目启动文件
 """
 from a import *  *默认是将模块名称空间中所有的名字导入
 __all__ = ['名字1', '名字2']  针对*可以限制拿的名字
 """

模块的查找顺序

1.内存
	import a
    import time
    time.sleep(15)
    print(a.name)
    a.func()
2.内置
	import time
    print(time)
    print(time.name)
 """
 在自定义模块的时候尽量不要与内置模块名冲突
 """
3.执行文件所在的sys.path(系统环境变量)
	首先还是要以执行文件为准!!!
   我们可以将模块所在的路径也添加到执行文件的sys.path中即可
    import sys
    print(sys.path)  # 展现是以列表的形式
    sys.path.append(r'C:\pythonProject\pythonProject3\其他')
    import b  # 添加路径以后再去调用其他路径的模块就可以啦
    print(b.name)

绝对导入和相对导入

"""
提醒:一定要分清出谁是执行文件!!!
	模块的导入全部以执行文件为准
"""
绝对导入:
	from mymd.aaa.bbb.ccc.ddd import name # 可以精确到变量名
	from mymd.aaa.bbb.ccc import ddd  # 也可以精确到模板名
 '套路就是按照目录一层层向下找'
相对导入:
	.在路径中表示当前目录
   ..在路径中表示上一层目录
	..\..在路径中表示上上一层目录
   不在依据执行文件所在的sys.path 而是以模块自身路径为准
"""
相对导入使用频率较低,一般用绝对导入即可,结构更加清晰
"""

大白话:多个py文件的集合>>>:文件夹
专业:内部含有__init__.py文件的文件夹(python2必须要求,python3无要求)

标签:__,文件,导入,名字,初识,模块,import
From: https://www.cnblogs.com/zhanghong1229/p/16803650.html

相关文章

  • 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、补充说......
  • 模块
    Day17模块今日内容概要索引取值与迭代取值的差异模块简介导入模块的两种句式导入模块的句式补充循环导入问题及解决策略判断文件类型模块的查找顺序模块的绝对......
  • linux 下GPRS模块使用sim900打电话发短信
    ————————————————————————————————————————————— 主机操作系统:Centos6.7开发板平台:FL2440 Linux内核版本:linux-3.0 开......