模块介绍

  一个模块就是包含了一组功能的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之模块与包的更多相关文章

  1. 第10章 Python的模块和包

    前面几章介绍的Python基础知识,相关案例都是以单源代码文件为例来说明的,这种单源代码文件在Python中就是模块,每个模块文件都可以被其他应用导入,Python正是通过模块导入技术来实现很灵活的功 ...

  2. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  3. Python之模块和包导入

    Python之模块和包导入 模块导入: 1.创建名称空间,用来存放模块XX.py中定义的名字 2.基于创建的名称空间来执行XX.py. 3.创建名字XX.py指向该名称空间,XX.名字的操作,都是以X ...

  4. 一文搞懂 Python 的模块和包,在实战中的最佳实践

    最近公司有个项目,我需要写个小爬虫,将爬取到的数据进行统计分析.首先确定用 Python 写,其次不想用 Scrapy,因为要爬取的数据量和频率都不高,没必要上爬虫框架.于是,就自己搭了一个项目,通过 ...

  5. python 深入模块和包

    模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...

  6. (Python )模块、包

    本节开始学习模块的相关知识,主要包括模块的编译,模块的搜索路径.包等知识 1.模块 如果我们直接在解释器中编写python,当我们关掉解释器后,再进去.我们之前编写的代码都丢失了.因此,我们需要将我们 ...

  7. Python 基金会 —— 模块和包简介

    一.模块(Module) 1.模块的作用      在交互模式下输出的变量和函数定义,一旦终端重新启动后,这些定义就都不存在了,为了持久保存这些变量.函数等的定义,Python中引入了模块(Modul ...

  8. python基础-------模块与包(一)

    模块与包 Python中的py文件我们拿来调用的为之模块:主要有内置模块(Python解释器自带),第三方模块(别的开发者开发的),自定义模块. 目前我们学习的是内置模块与第三方模块. 通过impor ...

  9. python中模块,包,库的概念

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

随机推荐

  1. mysql 读写分离 ,mysql_proxy实现

    下载安装mysql_proxy: 解压后, 该目录包含已经编译好的二进制文件 . 1: 利用mysql_proxy实现负载均衡 执行mysql_proxy ./mysql-proxy-path/bin ...

  2. 路飞学城Python-Day100

    Django项目之图书馆项目 1.项目架构 2.表结构设计 from django.db import models # Create your models here. #作者详情表 class A ...

  3. 热重载 预编译 编译器 JS引擎 作用域

    热重载就是页面每次改动,不需要手动去刷新,可自动刷新.保持vuex的状态. JS之预编译 JavaScript的预编译 编译器 JS引擎 作用域三者之间的关系 建议你先去看看你不知道的JavaScri ...

  4. js提示是否删除

    第一种: <a href="javascript:if(confirm('确认删除吗?'))window.location='del.asp'">删除</a> ...

  5. html中的meta标签属性

    <!-- 声明文档使用的字符编码 --> <meta charset='utf-8'> <!-- 优先使用 IE 最新版本和 Chrome --> <meta ...

  6. http-server 简介 复制的

    http-server 简介 https://blog.csdn.net/ithanmang/article/details/88375259http-server 是一个简单的零配置的命令行 htt ...

  7. HDU1527 - 取石子游戏【威佐夫博弈】

    有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者. ...

  8. vncserve安装与使用

    vncserver安装与配置 1.1.Centos安装 yum install tigervnc-server yum groupinstall "X Window System" ...

  9. 由free命令想到的

    root@xdj-Z9PA-D8-Series:~# free -m total used free shared buffers cached Mem: 15977 1683 14293 0 132 ...

  10. mysql Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)

    [现象说明] C/S程序远程訪问正常,本地訪问报下面异常 MySql.Data.MySqlClient.MySqlException (0x80004005): Authentication to h ...