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 之间的 ...
随机推荐
- [apr] Apache Portable Runtime
接手新项目,前任大量的使用了APR,虽然不影响理解主逻辑,但是看见一行不知道干嘛的代码,总是特别炸眼. 况且,虽然我从来不跨平台.但是APR如此优秀,学习理解它都不是浪费时间. 可是让人崩溃的是,竟然 ...
- spark Pair RDD 基础操作
下面是Pair RDD的API讲解 转化操作 reduceByKey:合并具有相同键的值: groupByKey:对具有相同键的值进行分组: keys:返回一个仅包含键值的RDD: values:返回 ...
- flask框架詳解
https://www.cnblogs.com/sss4/p/8097653.html 前言: Django:1个重武器,包含了web开发中常用的功能.组件的框架:(ORM.Session.Form. ...
- Altium Designer 绘图流程及快捷键
1.Shift+Ctrl+g 设置栅格捕捉大小 2.Q 切换单位 3.E+N +点击字体 改变字体大小 4.自动布线前需在Mechanical 层和keepout层添加一个边框 5.打过孔实现双面走线 ...
- membership DB生成 & dll 强命名 & 证书生成
UPD(Membership)数据库安装1.使用 Aspnet_regsql.exe 安装数据库 在 C:\WINDOWS\Microsoft.NET\Framework\\aspnet_regsql ...
- WebSocket 的鉴权授权方案
引子 WebSocket 是个好东西,为我们提供了便捷且实时的通讯能力.然而,对于 WebSocket 客户端的鉴权,协议的 RFC 是这么说的: This protocol doesn’t pres ...
- 1-1-linux环境搭建
1-1-linux环境搭建 1.安装虚拟机 (1).安装虚拟机增强工具. (2).创建共享文件夹:(https://www.cnblogs.com/huangjianxin/p/6343881.htm ...
- 【Mock】mock-server 环境搭建
前言 mock 除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供 API 接口 此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发会自己 mock一个 api ...
- InnoDB Lock
众所周知innodb的锁是行级锁,这样说也没有问题,只是还可以细分而已.推荐阅读何登成大牛的博客http://hedengcheng.com/?p=771 innodb的锁有三种算法,分别如下: Re ...
- centos who命令 查看当前登录系统用户信息
who 显示当前登录系统的用户,但w显示的更为详细 默认输出 [root@mysql ~]# who //用户名.登录终端.登录时间 root pts/ -- : (192.168.0.110) -a ...