「Python」迭代器取值与索引取值的差异 模块简介 导入模块的两种句式 两种导入句式的优缺点 补充知识 循环导入问题 判断文件类型 模块的查找顺序

本文探讨了Python中迭代器取值与索引取值的区别,介绍了模块的分类,包括内置、自定义和第三方模块。详细阐述了`import`和`from...import...`两种导入模块句式的优缺点,并讨论了循环导入问题和如何判断文件类型。同时,解析了模块的查找顺序,强调了避免与内置模块重名的重要性,以及如何通过调整`sys.path`来导入不同路径的模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

迭代器取值与索引取值的差异 模块简介 导入模块的两种句式 两种导入句式的优缺点 补充知识 循环导入问题 判断文件类型 模块的查找顺序

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

# 索引取值
l1 = ['a', 'b', 'c', 'd', 'e']
print(l1[0])	#a
print(l1[1])	#b
print(l1[0])	#a
#优点可以反复获取任意数值
#缺点针对无序容器无法取值
# 迭代取值
res = l1.__iter__()
print(res.__next__())	#a
print(res.__next__())	#b
print(res.__next__())	#c
#优点是一种通用的取值方式
#缺点取值开始后只能往前不能往后取值

模块简介

什么是python模块

任何python程序都可以是模块 具有一系列功能打包好的python程序就是模块

模块的分类

  1. 内置模块
    * python解释器自带 且可以直接实用的模块
    e.g:
    import time
    time.sleep(3)
  2. 自定义模块
    * 自己写的模块 包括注册功能 登陆功能 e.g:注册功能 登陆功能
  3. 第三方模块
    * 在网上查找别人做好的模块 e.g:图形识别 图形可视化 语音识别

模块的表现形式

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

导入模块的两种句式

注:真正的项目中 所有的py文件为英文 没有所谓的编号和中文

#方式一 import
import time
time.sleep()

在这里插入图片描述

#方式二 from...import...
from time import sleep
sleep()

两种导入句式的优缺点

import…
优点 通过导入模块可以使用到模块内所有名字且不会冲突 缺点 不能控制哪些功能不能被获取
from…import…
优点 能指名道姓地使用名字 且不需要加模块名作前缀
缺点 名字容易与当前全局名称空间中的名字产生冲突

补充知识

1.起别名
	#在多个模块名字相同 或 模块名较复杂的情况下 可以通过 as 别名 的方式取一个别名
#再通过别名.的形式调用模块内的功能
        import TimeMachineIndicator as TMI
	TMI.XXXXX
2.导入多个名字
	import time, sys, os
	建议同一目录下的模块  或 功能相似的模块 采用统一导入不相似尽量分开导入
	import time
	import os
	import sys
    
	from md import money, read1, read2	
	上述导入方式是推荐使用的 因为多个名字出自于一个模块文件
    
3.全导入
	需求:需要使用模块名称空间中很多名字 并且只能使用from...import句式
 	from md import *  # *表示所有
 	ps:针对*号的导入还可以控制名字的数量
  	在模块文件中可以使用__all__ = [字符串的名字]控制*能够获取的名字

循环导入问题

# 以下为a.py的内容
import b
name = 'from a'
print(b.name)

# 以下为b.py的内容
import a
name = 'from b'
print(a.name)
#无论执行任何一个都会报错

#解决措施
name = 'from a'
import b
print(b.name)

# 以下为b.py的内容
name = 'from b'
import a
print(a.name)
#彼此在使用彼此名字前 先准备好

判断文件类型

所有py文件都含有一个内置的名字__name__
当py文件为执行文件时__name__为__main__
当py文件为被导入文件时__name__为文件名(模块名)

# __name__主要用于开发模块的作者测试自己的代码使用
if __name__ == '__main__':
只有文件是执行文件的时候才会执行if的子代码

ps:在pycharm中可以直接编写main按tab键即可自动补全

模块的查找顺序

先在内存中查找>>>再去内置中查找>>>在去环境变量中查找(sys.path)
所有的路径都是参照执行文件的位置
可以通过 sys.path.append() 的方式添加文件的绝对路径
可以通过 from … import … 获取相对路径下的模块 起始位置一定是执行文件所在的位置

先在内存中查找验证

import md
    import time

    time.sleep(15)
    print(md.money)
# 执行md文件后,会在内存空间里面存一份,哪怕在睡眠期间遭到删除(删除的是硬盘的数据),但还是可以执行出结果。若再执行就报错。

再去内置中查找验证
如果自己有一个模块、文件与内置模块相同的文件名,会自动先调用内置模块:

 import time
 print(time.time())
 from time import name
 print(name)

所以创建模块时 不要与内置模块名重名产生冲突

在去环境变量中查找(sys.path)
一旦sys.path 第一个绝对路径找不到后面几乎也不会有。
所有的路径都是参照执行文件位置为准
想要导出不与执行文件一个路径下的文件只需将其添加(sys.path.append(r’模块路径) 进sys.path里即可导出。

绝对导入
利用from…import句式
起始位置一定是执行文件所在的路径
from xxx import mdd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值