可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块

模块表现形式为以.py结尾的代码文件

一个文件被看作一个独立的模块,一个模块也可以被看作是一个文件。

模块的文件名就是模块的名字加上扩展名.py

每个模块都有自己的名称空间

Python程序架构

一个python程序通常包括一个顶层程序文件和其他的模块文件(0个,1个或多个)

顶层文件:包含了程序的主要控制流程

模块文件:为顶层文件或其他模块提供各种功能性组件

模块首次导入(或重载)时,Python会立即执行模块文件的顶层程序代码,声明函数对象,而位于函数体内的代码直到函数被调用后才会执行。

模块的执行环境

模块是被导入的,但模块也可以导入和使用其他模块,这些模块可以用Python或其他编程语言写成

模块可内含变量、函数以及类来进行其工作,而函数和类可以包含变量和其他元素

如果打算以多个程序文件来组织你的Python程序,只有一个文件可以作为顶层执行文件,可以在顶层包含很多程序控制流,其他被导入的文件,都应该只包含类、变量、函数。

导入模块

在导入模块时只能使用模块名,而不是带.py后缀的模块文件名。

导入指定模块,会生成一个以模块名命名的名称空间。

impor语句导入模块:

import module

导入时可以给名称空间指定一个别名,如果使用别名,就只能使用别名调用了。

import module as module_alias

from-import 语句:

常用于只导入指定模块的部分属性至当前名称空间

from module import name1[,name2,...]

import 和 from 都是隐性赋值语句

import将整个模块对象赋值给一个变量名

from将一个或多个变量名赋值给导入此模块的模块中的同名对象,如果导入的变量和本地变量重名,则会覆盖本地的。

import的工作机制

1、寻找模块文件,2、编译成字节码,3、执行模块的代码来创建其所定义的对象。注意:模块只有在第一次导入时才会执行如上步骤;

后续的导入操作只不过是提取内存中已加载的模块对象,reload()可用于重新加载模块;

模块搜索

Python解释器在import模块时必须先找到对应的模块文件

程序的主目录

Python path目录

标准链接库目录

任何.pth文件的内容

这四个组件组合起来即为sys.path所包含的路径,而Python会选择在搜索路径中的第一个符合导入文件名的文件。

导入一个自定义模块的过程:

创建目录,用于保存自定义模块

mkdir /usr/local/mylib

进入python命令行,添加模块的搜索路径

import sys

sys.path

sys.path.append('/usr/local/mylib')

然后就可以直接用import导入自定义的模块了

Python执行被导入的模块的__name__属性是该模块的名称,而如果是直接执行该模块文件,模块的__name__属性是'main'。 下图的if段代码则是模块的测试代码,在模块被导入时是不会执行那段代码的。 只有直接运行才会执行。

添加模块文件的测试代码

Python 打包

包用于将一组模块归并到一个目录中,此目录即为包,目录名即为包名。

包是一个有层次的文件目录结构,它定义了一个由模块和子包组成的Python应用程序执行环境

基于包,Python在执行模块导入时可以指定模块的导入路径

import dir1.dir2.mod1

第一个容器文件夹必须要在模块的搜索路径中,在子目录中需要建立一个__init__.py的文件,一般为空,在调用模块时只需要使用 import '子目录名'.模块名称

模块的相对路径引用

from .bar import fn

表示引用当前模块中bar子模块,中的fn函数;

from .. import fn2

表示引用当前模块中.init.py文件中的fn2函数;

注:如果用相对路径引入模块,那么这个文件不能被直接执行,只能做为模块被引入。

使用disutils发布模块

setup.py 中可用参数:

platforms:平台列表

license:许可证

py_modules:各模块名称组成的列表,此些模块可能位于包的根目录下(module name),也可能位于某子包目录中(subpkg1.module name)

执行打包

python setup.py sdist   //源码包发行版

可以为sdist指定格式:

zip,gztar,bztar,ztar,tar

使用--formats= 指定格式

python setup.py bdist   //二进制发行版

可以为sdist指定格式:

gztar,ztar,rpm,pkgtool,

获取帮助的方式:

Python setup.py --help

Python setup.py --help-commands:显示所有可以使用的命令的帮助

Python setup.py COMMAND --help: 获取特定命令的帮助

Python setup.py COMMAND --help-formats: 获取特定命令支持使用的格式

简单的安装工具:pip 、easy_install

安装包:

python setup.py install

build and install

python setup build:

--build-base=/path/to/buildir

lib,lib.platform

第三方模块的默认安装路径通常为:/usr/local/python27/lib/python2.7/site-packages

自定义安装路径:

--user= 指定安装在用户家目录下的某个路径中。

--prefix= 指定Python库文件的安装路径

--exec-prefix= 指定和Python无关的,由其他语言编写的模块安装路径

深度定制:

--install-purelib=/path/ 指定纯Python编写的库文件存放的位置

--install-platlib=/path/ 由其他语言所实现的库文件的存放位置

--install-lib=/path/ 不加区分的将所有库安装到指定位置

--install-scripts=/path/ 可执行文件的安装路径

--install-data= 指定数据文件的安装路径

--install-headers= 指定C头文件的安装路径

转载于:https://blog.51cto.com/tchuairen/1681757

Python 模块学习相关推荐

  1. python textwrap_python2.7.3编译python模块学习- textwrap 文本包装和填充

    python模块学习- textwrap 文本包装和填充 代码实例: sample_text = ''' The textwrap module can beused to format text f ...

  2. Python模块学习 - 用tinify模块压缩和优化图片

    Python模块学习 - 用tinify模块压缩和优化图片 tinify模块 功能描述:TinyPNG和TinyJPG网站提供了压缩和优化.png和.jpg格式图片的功能.虽然可以很轻松地使用网页版进 ...

  3. Python模块学习 ---- zlib 数据压缩

    Python模块学习 ---- zlib 数据压缩 目录(?)[+] Python标准模块中,有多个模块用于数据的压缩与解压缩,如zipfile,gzip, bz2等等.上次介绍了zipfile模块, ...

  4. python模块学习笔记

    python模块学习笔记 1.Python自动发送邮件smtplib 2.制作二维码图片MyQR 3.绝对值模块math 4.CSV模块 5.openpyxl 模块,操作Excel文件 ExcelMa ...

  5. Python模块学习:glob 文件路径查找

    文章转载自<伯乐在线>原文出处: Darkbull Python模块学习:glob 文件路径查找 glob模块是最简单的模块之一,内容非常少.用它可以查找符合特定规则的文件路径名.跟使用w ...

  6. 解惑Python模块学习,该如何着手操作...

    Python模块 晚上和朋友聊天,说到公司要求精兵计划,全员都要有编程能力.然后C.Java.Python-对于零基础入门的,当然是选择Python的人较多了.可朋友说他只是看了简单的语法,可pyth ...

  7. Python模块学习-----optparse

    作用:一种类似于dos命令行的一种设计模块,例如:dos命令中添加-f会触发一种事件           可以自定义一些指令,用来完成某些操作 optparse.OptionParser() opti ...

  8. 【Python模块学习】pandas模块简介

    pandas模块学习 一.背景概述 Pandas (Python Data Analysis Library) 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. numpy更加适用 ...

  9. python模块学习(1)

    模块让你能够有逻辑地组织你的Python代码段.把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用. 简单地说,模块就是一个保存了P ...

  10. Python模块学习

    阅读目录 第一篇:Python模块之netmiko 第二篇:Python模块之junos-eznc 第三篇:Python模块之pexpect 第四篇:Python模块之paramiko 第五篇:Pyt ...

最新文章

  1. moss自定义内容查询webpart
  2. Anaconda 安装 Python 库(MySQLdb)的方法
  3. REVERSE-PRACTICE-JarvisOJ-3
  4. vim编辑器的基本使用
  5. windows火车刷票小白秘笈
  6. uva 10098 生成字典续序列
  7. c++ 获取文件夹文件并排序
  8. 进阶-第28__深度探秘搜索技术_实战掌握误拼写时的fuzzy模糊搜索技术
  9. WebRTC[7]-Failed to set remote offer sdp: Called with SDP without DTLS fingerprint
  10. 公布C#写的网游外挂源代码
  11. 悲观锁和乐观锁的区别,怎么实现
  12. Web开发中软件工程艺术(Web程序员请进来谈谈,特别是有大型门户网站后台开发的程序员)
  13. html网页打不开二级网页,教你二级网页打不开怎么解决
  14. 大数据就业的三大方向和十种岗位
  15. 基于四网融合的上海新城对外客运枢纽构建路径
  16. bzoj3391[Usaco2004 Dec]Tree Cutting网络破坏*
  17. 使用Iterator遍历map以及list用法
  18. 家谱整站源码php_PHP中找家谱树的几种方法
  19. 写点日志--排队叫号系统
  20. C# WPF 前后台Two Way绑定

热门文章

  1. 7-31 字符串循环左移 (20 分)
  2. 神的战争god无法显示服务器,神的战争god快速升级抢资源攻略
  3. 在java程序中怎么造成死锁_java – 了解为什么在此实现中发生死锁
  4. vivado中如何读取十进制小数_二进制十进制间小数怎么转换,原来是这样的
  5. 计网期末复习 - 发送时延和传播时延计算
  6. live linux 密码,Linux_如何使你的Linux系统省略输入用户名密码,在做Livecd的时候总是要输入用 - phpStudy...
  7. html带图片的进度条,原生javascript上传图片带进度条【实例分享】
  8. php 流量,PHP 流量控制语句的顶替语法
  9. java 字符串 内存_java – 字符串文字和永久生成内存区域
  10. CI框架发送邮件(带附件)