模块介绍

  一个模块就是包含了一组功能的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. 面试官:精通 Mybatis?请回答下这几个问题

    点关注,不迷路:持续更新Java架构相关技术及资讯热文!!! Mybatis是现在非常主流的持久层框架,虽然平时用的多,但是其中几个细节的问题,能说出个所以然来不? 一.最常见,参数中 #{} 和 $ ...

  2. MongoDB经典入门(1)--安装

    一.前言 最近开始学习非关系型数据库MongoDB,却在博客园上找不到比较系统的教程,很多资料都要去查阅英文网站,效率比较低下.本人不才,借着自 学的机会把心得体会都记录下来,方便感兴趣的童鞋分享讨论 ...

  3. Map使用操作系统内存的情况

    public static void main(String[] args) { System.out.println("程序启动-->可用内存:"+(getSystemMe ...

  4. Centos 7 安装图形化界面

    Centos 7 默认是没有图形化界面的,但我们很多人在习惯了 Windows 的图形化界面之后,总是希望有一个图形化界面从而方便我们使用,这里介绍一下 CentOS7安装图形化桌面系统的方法. 一. ...

  5. MySQL py模块的链接Navicat可视化工具

     数据库可视化工具Navicat 1 基本操作: 1 库 表 字段 记录(增删改查) 2 添加主建,添加自增. 3 添加外键,外键的链接 4 模型建表,模型添加外键.(逆向数据库到模型,运行SQL文件 ...

  6. C++基础 (10) 第十天 C++中类型转换 异常 栈解旋 io操作

    1之前内容的回顾 C语言中的类型转换(int)a  强转可读性太差了 C++把()拆分成了四种转换方式 static_cast static_cast在编译器编译阶段就进行转换了 2.dynamic_ ...

  7. Bash 如何取得当前正在执行的脚本的绝对路径?

    转自:http://blogread.cn/it/article/6549?f=wb Bash 如何取得当前正在执行的脚本的绝对路径? 如题,一般我们写Shell脚本的时候,都倾向使用绝对路径,这样无 ...

  8. 常用前端布局,CSS技巧介绍

    常用前端布局,CSS技巧介绍 对前端常用布局的整理总结,并对其性能优劣,兼容等情况进行介绍 css常用技巧之可变大小正方形的绘制 1:若通过设置width为百分比的方式,则高度不能通过百分比来控制. ...

  9. Context - React跨组件访问数据的利器

    Context提供了一种跨组件访问数据的方法.它无需在组件树间逐层传递属性,也可以方便的访问其他组件的数据 在经典的React应用中,数据是父组件通过props向子组件传递的.但是在某些特定场合,有些 ...

  10. Problem 10

    Problem 10 # Problem_10.py """ The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. ...