第七章 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,然后是一些模块文件和 ...
随机推荐
- Java中数组获取最大值
最大值获取:从数组的所有元素中找出最大值. 实现思路: 定义变量,保存数组0索引上的元素 遍历数组,获取出数组中的每个元素 将遍历到的元素和保存数组0索引上值的变量进行比较 如果数组元素的值大于了变量 ...
- JS 封装一个对数组去重的函数
var zz = [1,2,3,5,5,7,8,6,6]; var se = []; d(se); function d(attr){ for(var i = 1;i<zz.length;i++ ...
- 使用 Laravel 5.5+ 更好的来实现 404 响应
译文首发于 使用 Laravel 5.5+ 更好的来实现 404 响应,转载请注明出处! Laravel 5.5.10 封装了两个有用的路由器方法,可以帮助我们为用户提供更好的 404 页面.现在,当 ...
- springboot实现拦截器
你首先需要一个搭建好的springboot项目,具体怎么搭建我还没有相应的随笔可以交给你,可以自己上网上看一下,学习一下,之后我要是总结出来的话,这里面我会通知的 首先这个项目的目录结构是这样子的 首 ...
- PHP学习总结(7)——PHP入门篇之PHP注释
注释 在PHP中也有注释语句:用双斜杠(//)来表示.其它语言中,Html中使用<!--注释语句-->,CSS中使用/*注释语句*/.如下面代码: <?php//输出hi,imooc ...
- Spring学习总结(17)——Spring AOP权限管理
每个项目都会有权限管理系统 无论你是一个简单的企业站,还是一个复杂到爆的平台级项目,都会涉及到用户登录.权限管理这些必不可少的业务逻辑.有人说,企业站需要什么权限管理阿?那行吧,你那可能叫静态页面,就 ...
- VirtualBox扩展包安装教程|VirtualBox扩展增强包怎么安装
VirtualBox是一款功能强大的免费虚拟机软件,一般我们安装VirtualBox后要安装扩展增强包,VirtualBox扩展包包含USB2.0和USB3.0控制等支持功能,如果没有装,在使用过程中 ...
- 洛谷——P1968 美元汇率
https://www.luogu.org/problem/show?pid=1968#sub 题目背景 此处省略maxint+1个数 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程 ...
- CF43A Football
CF43A Football 题意翻译 题目大意 两只足球队比赛,现给你进球情况,问哪支队伍赢了. 第一行一个整数nn (1\leq n\leq 1001≤n≤100 ),表示有nn 次进球,接下来n ...
- uva 10003 Cutting Sticks 【区间dp】
题目:uva 10003 Cutting Sticks 题意:给出一根长度 l 的木棍,要截断从某些点,然后截断的花费是当前木棍的长度,求总的最小花费? 分析:典型的区间dp,事实上和石子归并是一样的 ...