模块及模块导入

知识点1 迭代取值和索引取值的区别

  • 1.1 索引取值:
    • 优点:可以反复获取任意数据值
    • 缺点:对无序的集合体无法取值
l1 = [1, 2, 3]
print(l1[0])
print(l1[1])
print(l1[2])
print(l1[2])
print(l1[1])
print(l1[0])
  • 1.2 迭代取值:
    • 优点:提供了一种通用的取值方式
    • 缺点:取值一旦开始 只能前进 不能退后
l1 = [1, 2, 3]
res = l1.__iter__()
print(res.__next__())
print(res.__next__())
print(res.__next__())

知识点2 模块

2.1 定义:
  • 模块就是具有特定功能的一个结合体,调用模块就拥有了该模块的所有功能
2.2 分类:
  • 1> 内置模块 python解释器自带的模块
  • 2> 自定义模块 自己写的模块
  • 3> 第三方模块 别人写的发布在网上的模块,使用之前需要先下载
2.3 模块的表现形式
  • 1> py文件
  • 2> 含有多个py文件的文件夹
  • 3> 已被编译为共享库或DLL的c或C++扩展(了解)
  • 4> 使用C编写并链接到python解释器的内置模块(了解)
2.4 模块的两种调用放方式
  • 1> 整体导入
    • 语法: import 模块名
    • 优点: 调用之后可是使用该模块名称空间中的所有名字,即通过’模块点’的形式调用
    • 缺点: 当只需要调用几个或者少部分模块中的名字的情况下,整体调用浪费内存空间
    • 语言描述调用过程:首先产生一个执行文件(被导入文件)的名称空间,模块名被存入该名称空间,接着产生模块文件的名称空间,模块中的所有名字被存入到该名称空间,通过’模块点’的形式可以调用模块名称空间中的所有名字

在这里插入图片描述

import time 
time.time()
time.sleep()
time.mktime()
  • 2> 指名道姓导入
    • 语法 from 模块名 import 名字
    • 优点 使用时不需要加模块名的前缀
    • 缺点 容易和执行文件中的名字发生冲突
    • 语言描述调用过程 首先产生一个执行文件(被导入文件)的名称空间,导入的名字被存入该名称空间,接着产生模块文件的名称空间,模块中的所有名字被存入到该名称空间,但只能调用被导入执行文件的名字
      在这里插入图片描述
from md import money

print(money)
2.5 起别名
  • 1> 导入的名字相同时
from md1 import money as m_md1
from md2 import money as m_md2
print(m_md1)
print(m_md2)
  • 2> 导入的名字太复杂的时候
import multiprocessing as mu
2.6 导入多个名字
  • 方式1:不推荐
import time, sys, os
  • 方式2: 推荐
import time
import os
import sys
2.7 全导入
  • 语法:from 模块名 import *
  • 控制导入数量的方法: 在模块文件中加入__all__ = [想被导入的名字1,想被导入的名字2,]
from multiprocessing import *

知识点3 循环导入

  • 1 什么时循环导入?
    • 两个文件彼此导入
  • 2 循环导入产生的问题,以及产生问题的原因
    • 问题:会出现报错的现象
    • 原因:在彼此的名字没有准备好的情况下被使用
  • 3 如何解决循环导入产生的问题?
    • 在彼此调用名字之前 先准备好名字
  • 4 真的推荐使用循环导入吗?
    • 不推荐,最大可能的避免循环导入的问题,如果无法避免,则在调用前手动修改产生需要的名字

知识点4 判断文件类型

  • 所有的py文件都有一个__ name__ 的内置名 当py文件是执行文件的时候__ name__ 的结果是:__ main__ 当py文件时被导入文件的时候 __ name__ 的结果是:模块名
  • 应用场景:模块的作者在模块文件中自己测试功能的时候使用
if __name__ == '__main__':
    当文件是执行文件的时候才会执行if的子代码

知识点5 模块的查找顺序

  • 1> 内存中查找>>>>>内置中查找>>>>>>sys.path中查找
  • 2> 验证过程
# 1.导入一个文件 然后在导入过程中删除该文件 发现还可以使用
	 import md
    import time

    time.sleep(15)
    print(md.money)
  • 3> 切记,不要创建和内置模块名相同的名字
  • 4> 所有的路径都要参照执行文件来确定
    • 方式1:sys.path.append(目标文件所在的路径)
    • 方式2:from … import
sys.path.append(E:\Practices\a\b\c)
from a.b.c import d.py
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值