第七章 Python之模块与包
模块介绍
一个模块就是包含了一组功能的python文件(例如module.py,模块名是module),它从文件级别组织程序,更方便管理,这时我们不仅仅可以把这些文件当作脚本执行,还可以把他们当作模块来导入到其他模块中,实现了功能的重复利用。同时我们也可以下载别人写好的模块导入到自己的项目中使用,可以提高开发效率
#在python中,模块的使用方式都是一样的,模块可以细分为四个通用类别:
1 使用python编写的.py文件
2 已被编译为共享库或DLL的C或C++扩展
3 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)
4 使用C编写并链接到python解释器的内置模块
模块的使用
import 模块名
import spam
#第一次导入模块:(重复导入只会引用之前加载好的结果)
#1.产生一个新的名称空间
#2.运行spam代码,产生的名字都存放于新的名称空间中,运行过程中global关键字指向的就是该名称空间
#3.在当前名称空间拿到一个名字spam,该名字指向1的名称空间(使用spam.名字来访问spam文件中定义的名字)
#被导入的模块在执行过程中使用自己独立的名称空间作为全局名称空间
import spam as s #(为被导入模块spam起别名)
import spam,time,os #(一行导入多个模块)
from 模块名 import 名字
#优点:引用时不用加前缀,简单
#缺点:容易与当前名称空间起冲突
from spam import * #把spam中所有的不是以下划线(_)开头的名字都导入到当前位置
__all__=['money','read1'] #在另一个文件中用from spam import * 就能导入列表中规定的名字
模块的搜索路径
内存中已经加载的模块->内置模块->sys.path路径中包含的模块
# 1、在第一次导入某个模块时(比如spam),会先检查该模块是否已经被加载到内存中(当前执行文件的名称空间对应的内存),如果有则直接引用
# ps:python解释器在启动时会自动加载一些模块到内存中,可以使用sys.modules查看
# 2、如果没有,解释器则会查找同名的内建模块
# 3、如果还没有找到就从sys.path给出的目录列表中依次寻找spam.py文件
sys.path.append(r'%s'%filepath) #将被导入文件的绝对路径添加到sys.path中
一个python文件的两种用途
(1).脚本:一个文件就是整个程序,用来被执行
(2).模块:文件中定义了很多功能,用来被导入使用
#python为我们内置了全局变量__name__
#当文件被当作脚本执行时,__name__ 等于 '__main__'
#当文件被当作模块执行时,__name__ 等于 模块名
if __name__ == '__main__':
#测试语句
包介绍
包就是一个包含有_init_.py文件的文件夹,创建包的目的就是为了用文件夹将文件/模块组织起来,以此来提高程序的结构性和可维护性。创建包的目的不是为了运行,而是被导入使用,包的本质就是一种模块
包的使用
#1.包导入语句也分为import和from..import..两种,在导入时都必须遵循一个原则:凡是在导入时带点的,点的左边都必须是一个包,否则非法
#2.import文件,产生名称空间中的名字来源于文件,import包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件
#3.环境变量都是以执行文件为准的 from package1.package2 import m1 #绝对导入
from .package2 import m1 #相对导入(.代表当前路径)
软件开发规范

#bin---程序入口,存放可执行启动文件
#conf---存放配置文件
#src---存放核心代码
#db---存放数据
#lib---自定义库或常用工具
#log---存放日志
#readme---软件功能介绍
第七章 Python之模块与包的更多相关文章
- 第10章 Python的模块和包
前面几章介绍的Python基础知识,相关案例都是以单源代码文件为例来说明的,这种单源代码文件在Python中就是模块,每个模块文件都可以被其他应用导入,Python正是通过模块导入技术来实现很灵活的功 ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- Python之模块和包导入
Python之模块和包导入 模块导入: 1.创建名称空间,用来存放模块XX.py中定义的名字 2.基于创建的名称空间来执行XX.py. 3.创建名字XX.py指向该名称空间,XX.名字的操作,都是以X ...
- 一文搞懂 Python 的模块和包,在实战中的最佳实践
最近公司有个项目,我需要写个小爬虫,将爬取到的数据进行统计分析.首先确定用 Python 写,其次不想用 Scrapy,因为要爬取的数据量和频率都不高,没必要上爬虫框架.于是,就自己搭了一个项目,通过 ...
- python 深入模块和包
模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...
- (Python )模块、包
本节开始学习模块的相关知识,主要包括模块的编译,模块的搜索路径.包等知识 1.模块 如果我们直接在解释器中编写python,当我们关掉解释器后,再进去.我们之前编写的代码都丢失了.因此,我们需要将我们 ...
- Python 基金会 —— 模块和包简介
一.模块(Module) 1.模块的作用 在交互模式下输出的变量和函数定义,一旦终端重新启动后,这些定义就都不存在了,为了持久保存这些变量.函数等的定义,Python中引入了模块(Modul ...
- python基础-------模块与包(一)
模块与包 Python中的py文件我们拿来调用的为之模块:主要有内置模块(Python解释器自带),第三方模块(别的开发者开发的),自定义模块. 目前我们学习的是内置模块与第三方模块. 通过impor ...
- python中模块,包,库的概念
模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...
随机推荐
- codeforces 789 B. Masha and geometric
链接 B. Masha and geometric depression 题意 给你一个等比数列的首项和公比q,然后给出一个上限l,m个数字,在这个等比数列里,小于l且没有在m个数字里面出现过的可以写 ...
- 洛谷P1941飞扬的小鸟 完全背包
思维难度不大,就是有许多细节要注意. 1.不能开滚动数组. 2.要特判飞过天花板的情况. Code: #include<cstdio> #include<algorithm> ...
- selenium的显示等待和隐式等待区别
1.selenium的显示等待 原理:显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception.(简而言之:就 ...
- python之openpyxl模块
一 . Python操作EXCEL库的简介 1.1 Python官方库操作excel Python官方库一般使用xlrd库来读取Excel文件,使用xlwt库来生成Excel文件,使用xlutils库 ...
- WEBGL学习【十】运动模型
<!DOCTYPE HTML> <html lang="en"> <head> <title>LWEBGL6.2, Animated ...
- ORA-29857: 表空间中存在域索引和/或次级对象
今天小编在操作 oracle 数据库,删除表空间时引发了异常!! SQL> drop tablespace nbmap including contents; 为什么会造成以上的异常呢? 根据小 ...
- auto-boxing, uboxing,以及缓存问题
package chengbaoDemo; public class Test02 { public static void main(String[] args) { Integ ...
- 干货:鲜为人用的MySQL高级特性与玩法!
上一篇文章<万字总结:学习MySQL优化原理,这一篇就够了!>文末给大家留有两个开放的问题: 有非常多的程序员在分享时都会抛出这样一个观点:尽可能不要使用存储过程,存储过程非常不容易维护, ...
- Linux下 利用find命令删除所有.svn目录
====================实例============== 删除所有.svn目录 这也是我当初查找 Linux find 命令的目的. 1) find . -type d -name ...
- 动态为TextView控件设置drawableLeft图标,并设置间距
效果图: 重要属性: textView.setCompoundDrawablePadding(4);//设置图片和text之间的间距 textView.setPadding(-5, 0, 0, 0); ...