Python全栈-day14-模块和包
一、模块
1.模块
1)定义
一系列功能的集合体,在Python中py文件就是一个模块
2)模块的类别
a.使用Python编写的py文件
b.已经被编译成共享库或者DLL的C 或者 C++ 扩展
c.把一系列模块组织在一起的文件夹(注:文件夹下有一个__init__.py文件,该文件成称之为包)
d.使用 C 编写并链接到Python解释器的内置模块
3)为什么要实用模块
a.重用功能
b.拿来主义,提高开发效率
2.模块的导入方法
1)方法一:
import 模块名
调用模块内功能: 模块名.模块名名称空间中的名字
一次导入之后,直接引用第一次导入的结果,不会重复执行文件模块中的功能
导入时执行三件事:
a.创建文件名称空间
b.执行模块对应文件,把名字放在创建的名称空间中
c.在当前执行文件中拿到一个模块名,该模块指向建立的名称空间
# 导入和调用模块内的功能
import time
res = time.sleep(5) # 导入模块后起别名
import socketserver as sockserver # 一行导入多个模块
# import xx,ss,yy....
2)方法二:
from 模块名 import xxx(名字)
首次导入模块,前两件事和import导入的方法一样,第三件事直接拿xxx(属于执行文件的名称空间),xxx是指向模块中对应的值
优点:不加前缀,代码比较精简
缺点:容易与当前执行文件名称空间中的名字重复,导致无法引用
# 导入方法
from time import sleep
# 全部导入
from time import sleep *
3)通过__name__区分py文件的两种用途
a.if __name__ == '__main__' 文件被当做脚本执行
b.等于模块名时,文件被当做模块导入
4)模块的搜索路径
内存 > 内置模块 > sys.path
强调:
sys.path的第一个值为当前执行文件的文件夹
通过搜索顺序可以看出,通过from导入模块或者开发人员把当前执行文件的名字或者文件内的对象定义成引用的模块的名字时,会出现无法引用模块的错误
二、包
1.包
1)定义
包是一种通过使用 '.模块名 ' 来组织Python模块名称空间的方式,具体说包就是一个含有__init__.py文件的文件夹,创建的目的就是为了用文件夹/模块组织起来
注意:
a.在Python3.x中,即使包下没有__init__.py文件,导入包也不会出错,而在Python2.x中,包下必须存在该文件
b.创建包的目的不是为了运行,而是被导入使用,包只是模块的一种形式,其本质就是模块
2.为什么使用包
包是有文件夹组织起来的模块,文件夹的功能就是将模块组织起来,随着功能越写越多,我们将无法将所有功能都放在一个文件夹中,于是通过文件夹把模块组织起来,以提高程序的结构性和可维护性
参考: http://www.cnblogs.com/linhaifeng/articles/6379069.html#_label10
补充知识:
包的使用
1.创建包的名称空间
2.在执行包下面的__init__文件的时候,将包内的名称保存到包的名称空间中
3.从执行文件内拿到的名字,并指向创建的包的模块名称空间中 强调:
1.在导入是带点的,点的左边必须是一个包,这是导入包特有的语法
2.包内,模块直接的导入应该使用from ... import ...
3.from ... import ...导入之后,必须是一个明确的名字,无任何前缀
from x.y.z import i.j.k # 错误,可以是模块或者和包 导入方式:
1.绝对导入:按绝对路径导入
2.相对导入:按相对路径导入
Python全栈-day14-模块和包的更多相关文章
- Python全栈--7模块--random os sys time datetime hashlib pickle json requests xml
模块分为三种: 自定义模块 内置模块 开源模块 一.安装第三方模块 # python 安装第三方模块 # 加入环境变量 : 右键计算机---属性---高级设置---环境变量---path--分号+py ...
- Python全栈day14(集合)
一,集合 1,集合由不同元素组成 2,无序 3,集合中元素必须是不可变类型 二,定义集合 1,s = {1,2,3,4,5} 2,s = set(hello)以迭代的方式生成集合 s = set(&q ...
- Python全栈day14(字符串格式化)
一,%字符串格式化 1,使用%s 后面一一对应输入对应的字符串,%s可以接受任何参数 print ("I am %s hobby is zhangsan"%'lishi') pri ...
- Python全栈之路目录结构
基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...
- Python全栈开发【模块】
Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
python全栈开发笔记第二模块 第四章 :常用模块(第二部分) 一.os 模块的 详解 1.os.getcwd() :得到当前工作目录,即当前python解释器所在目录路径 impor ...
- python全栈开发中级班全程笔记(第二模块、第四章(三、re 正则表达式))
python全栈开发笔记第二模块 第四章 :常用模块(第三部分) 一.正则表达式的作用与方法 正则表达式是什么呢?一个问题带来正则表达式的重要性和作用 有一个需求 : 从文件中读取所有联 ...
- Python全栈之路----常用模块----hashlib加密模块
加密算法介绍 HASH Python全栈之路----hash函数 Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列 ...
- python全栈开发之正则表达式和python的re模块
正则表达式和python的re模块 python全栈开发,正则表达式,re模块 一 正则表达式 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的 ...
随机推荐
- [skill][telnet] 用telnet获取一个网页
一直也搞不懂, telnet到底是干嘛用的. 然而, 它可以得到一个网页. /home/tong/Data/performance_test [tong@T7] [:] > telnet nyu ...
- 剑指Offer题解(Python版)
https://blog.csdn.net/tinkle181129/article/details/79326023# 二叉树的镜像 链表中环的入口结点 删除链表中重复的结点 从尾 ...
- fiddler4如何只抓取指定浏览器的包
在实际工作中,常常会抓取浏览器的数据,其加载的数据较多,不好区分,不知道其是哪个是需要抓取的数据,所以就需抓取指定浏览器的数据,这样就能很清晰知道数据的来源. 步骤一: 打开fiddler4,再打开浏 ...
- 《linux 用户管理》- useradd/userdel/usermod/groupadd/who/w
一:概念 在 Linux 中,使用一个 32位整数 来记录每一个用户(USER ID 简单 UID),这意味着在 Linux 中,可以有 40亿 个不同的用户. 系统. 在 /etc/passwd ...
- 重读《深入理解Java虚拟机》二、Java如何分配和回收内存?Java垃圾收集器如何工作?
线程私有的内存区域随用户线程的结束而回收,内存分配编译期已确定,内存分配和回收具有确定性.共享线程随虚拟机的启动.结束而建立和销毁,在运行期进行动态分配.垃圾收集器主要对共享内存区域(堆和方法区)进行 ...
- TZOJ:最大连续子序列
描述 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.最大连续子 ...
- 批量查询"_mget"
1.不同index的批量查询GET /_mget{ "docs":[{ "_index":"test_index1", "_typ ...
- 更改配置:远程访问gitlab的postgresql数据库
作为这篇文章的补充: 将gitlab中的postgresql数据库开通远程访问 https://www.cnblogs.com/andy9468/p/10609682.html 替代(二)中的2.3. ...
- 电脑出现 flash update failed 解决方法
笔记本电脑过了一个周末打开时出现以上问题,每次都进入这个界面 解决方法: 拆机,插拨一下内存条,硬盘,就启动了
- Python3学习之路~6.4 析构函数
析构函数是在实例释放.销毁的时候执行的,通常用于做一些收尾工作.比如说,关闭一些数据库连接.打开的临时文件等. #Author:Zheng Na class Role: # 构造函数 def __in ...