热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

7.13模块简介

今日内容迭代取值与索引取值的差异l1[11,22,33,44]索引取值优势:可以随时反复的取值劣势:对无序的容器类型无法取值print(l1[1])#22print(l1[0]

今日内容

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

l1 = [11, 22, 33, 44]
索引取值
优势:可以随时反复的取值
劣势:对无序的容器类型无法取值
print(l1[1]) # 22
print(l1[0]) # 11
print(l1[1]) # 22
迭代取值
优势:提供了一种通用的取值方式
劣势:取值只能往前不能后退
res = l1.__iter__()
print(res.__next__()) # 11
print(res.__next__()) # 22
print(res.__next__()) # 33
使用那种方法需要结合具体实际情况

模块简介

'''
python的屈辱史
python刚开始出来的时候都被其他程序员瞧不起 因为太简单 写代码都是调用模块 调包侠(贬义词)
随着业务的扩展其他程序员也开始用python写代码写完之后发现python贼好用 真香定律 调包侠(褒义词)
'''
1.模块可以看成是一系列功能结合体
使用模块就相当于拥有了这个结合体内的所有功能 如虎添翼
2.模块的分类
2.1.内置模块
解释器自带的 可以直接使用的模块
eg:
import time
time.sleep(2)
2.2.自定义模块
直接写的模块
eg:
注册功能 登录功能
2.3.第三方模块
别人写的模块 存于网络上 使用之前需要提前下载
eg:
图像识别 图形可视化 语言识别
3.模块的四种形式
1.py文件 使用python编写的文件也可以称之为模块文件
2.含有多个py文件的文件夹(按照模块功能的不同划分不同的文件夹储存)
3.已被编译为共享库或DLL的C或C++扩展
4.使用C编写并链接到python解释器的内置模块

导入模块的两种语法句式

导入模块的句式1 import

image


import md
1.会产生执行文件的名称空间
2.产生被导入文件的名称空间并运行该文件的所有代码 储存名字
3.在执行文件中会获取一个模块的名字 通过该名字点的方式就可以使用到被导入文件名称空间中的名字
之后的导入 都是直接引用首次导入产出的md.py名称空间 不会重复执行代码
import md # 有效
import md # 无效
import md # 无效
导入模块的句式2 from...import...句式
1.创建执行文件的名称空间
2.创建被导入文件的名称空间
3.执行被导入文件中的代码 将产生的名字储存到被导入文件的名称空间中
4.在执行文件中获取到指定的名字 指向被导入的名称空间

两种导入句式的优缺点

import md
优点:通过md点的方式可以使用到模块内所有的名字 并且肯定不会与当前名称空间的名字冲突
缺点:md什么都可以点 有时候并不想让所有的名字都被使用
from md money, func
优点:指明道姓的使用指定的名字 并且不需要加模块名前缀
缺点:名字容易与当前名字空间冲突,(绑定关系被修改)

补充知识

1.起别名
情况1:多个模块文件相同(多个人写)
from md import money as md_my
from foo import money as foo_my
情况2:原有模块名字比较复杂
import md as m
print(m)
2.导入多个名字
from md import time, sys, os
上述导入方式多个功能相似才适应 不相似不推荐使用
import time
import sys
import os
from md money,func,func1
上述导入方式推荐使用,多个名字都出自同一个模块
3.全导入
from md import * # 表示所有
ps:针对星号的导入还可以控制名字的数量
在模块文件中可以使用__all__ = [字符串的名字]控制*能够获取的名字

循环导入问题

如何理解循环导入
循环导入就是两个文件彼此导彼此
循环导入容易出现报错现象
使用彼此名字时可能没准备好是的情况下就使用了
如何解决导入保存现象
在彼此使用名字前 现准备好
'''循环导入在将来避免出现 如果避免不了 就想办法让所有的名字在使用前准备好'''

判断文件类型

学习完模块之后 我们的程序运行起来可能就是涉及到一个文件了
所有的py文件都是自带一个__name__内置名
当py文件是执行文件的时候 __name__的结果是__main__

__name__主要用于开发模块的作者测试自己的代码使用
if __name == '__main__':
当文件是执行文件的时候才会执行if的子代码
上述判断只会出现整个程序的启动文件中
在pycharm中可以直接编写main+tab键自动补全

模块的查找顺序

'''
1.先去内存中查找
2.再去内置中查找
3.再去sys.path中查找(程序系统的环境变量)
'''
1.导入一个文件 然后在导入过程中删除 依然还可以使用
import md
import time
time.time(15)
print(md.money)
2.创建一个跟内置模块名相同的文件
import time
print(time.time()) # 1657709180.0668466
print(time.name)
3.导入模块的时候一定要知道谁是执行文件
所有路径都是参照执行文件来的
import sys
sys.path.append(r'被导入文件路径')
1.通用方式
sys.path.append(r'目标文件所在路径')
2.利用from...import方式
from 目标文件路径 import ...
起始位置一定是执行文件所在路径


推荐阅读
author-avatar
秋夜里的寂寞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有