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 之间的 ...
随机推荐
- spark学习笔记3
Spark 支持在集群范围内将数据集缓存至每一个节点的内存中,可避免数据传输,当数据需要重复访问时这个特征非常有用,例如查询体积小的“热”数据集,或是运行如 PageRank 的迭代算法.调用 cac ...
- 转:JAVA守护线程
原文地址:https://www.cnblogs.com/wxgblogs/p/5417503.html 详细内容看原文~ ,写的挺好的 在Java中有两类线程:User Thread(用户线程). ...
- RHEL6.2的安装文档
1 Installing RHEL 6.2 1.1 开始安装 选择“Install or upgrade an existing system”: 1.2 光盘检测 选择“Skip”跳过安装介质的检查 ...
- LeetCode 771 Jewels and Stones 解题报告
题目要求 You're given strings J representing the types of stones that are jewels, and S representing the ...
- java 随机抽取案例,不重复抽取
以学生类为例,先准备一个Student类 package cn.sasa.demo1; public class Student { private int id; private String na ...
- VS Code 添加移除asp.net core项目引用
可以通过编辑.csproj文件来添加或者移除项目引用. 注意这里并没有智能提示, 最好是在Nuget网站(https://www.nuget.org/)搜索好相关包之后填写进来. 编辑结束之后, vs ...
- 【UNIX网络编程(三)】TCP客户/server程序演示样例
上一节给出了TCP网络编程的函数.这一节使用那些基本函数编写一个完毕的TCP客户/server程序演示样例. 该样例运行的过程例如以下: 1.客户从标准输入读入一行文本,并写给server. 2.se ...
- Hibernate的状态
最新的Hibernate文档中为Hibernate对象定义了四种状态(原来是三种状态,面试的时候基本上问的也是三种状态),分别是:瞬时态(new, or transient).持久态(managed, ...
- kafka6 编写使用自定义分区的生产者
一 客户端 在上一篇博客创建的简单生产者的基础上,进行两个修改操作: 1.新建SimplePartitioner.java,修改返回分区为1. SimplePartitioner.java代码如下 p ...
- MySQL语法和用户授权
管理数据库 create database 等同于 create schema #导入数据库脚本 MariaDB [db1]> source /root/mysql/hellodb_in ...