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 之间的 ...
随机推荐
- [daily][archlinux][btrfs][mysql] 在btrfs上使用mariadb
在btrfs上使用mariadb的时候,需要注意关闭btrfs的Copy on Write (/var/lib/mysql目录) 如下: ┬─[tong@T7:~/Data/anthropoid]─[ ...
- LeetCode 557 Reverse Words in a String III 解题报告
题目要求 Given a string, you need to reverse the order of characters in each word within a sentence whil ...
- 《HTTP - https》
一:HTTP 缺点? - 明文通讯(也是最受诟病的一个缺点) - 不验证对方的身份(你说你是你?你怎么证明你是你呢?) - 无法验证报文的完整性,可能已经被篡改(在挨打的边缘,来回试探) 二:HTTP ...
- Java如何对List集合的操作方法(二)
4.list中查看(判断)元素的索引: 注意:.indexOf(): 和 lastIndexOf()的不同: ///*************************************** ...
- 洛谷P4358密钥破解 [CQOI2016] 数论
正解:数论 解题报告: 先,放个传送门QwQ 这题难点可能在理解题意,,, 所以我先放个题意QAQ 大概就是说,给定一个整数N,可以被拆成两个质数的成绩p*q,然后给出了一个数e,求d满足e*d=1( ...
- 【三分】light bulb(zoj3203)
题目描述: 如图,你可以在房间里移动,灯泡的高度为H,你的身高为h,灯泡与墙的水平距离为D,求你影子的最长长度(影子长度=地上影子长度+墙上影子长度) 样例输入: 0.5 样例输出: 1.000 0. ...
- 批量增删改"_bulk"
除了delete以外,每个操作需要两个json字符串,语法如下:{"action":{"metadata"}}{"data"}bulk ap ...
- The Swift Programming Language 中文版
http://numbbbbb.github.io/the-swift-programming-language-in-chinese/
- 协程.md
一. # 可迭代l = [ i for i in range(10) ] # l是可迭代的,但不是迭代器for idx in l: print(idx) # range是个迭代器for i ...
- 算法笔记-PHP实现栈的操作
[栈]后进先出,先进后出,这就是典型的“栈”结构. 任何数据结构都是对特定应用场景的抽象,数组和链表虽然使用起来更加灵活,但却暴露了几乎所有的操作,难免会引发错误操作的风险. ...