一、模块基础

1、模块

自我包含,且有组织的代码片段就是模块

模块是Pyhon最高级别的程序组织单元,它将程序代码和数据封装起来以便重用。实际的角度,模块往往对应Python程序文件。
每个文件都是一个模块,并且模块导入其他模块之后就可以使用导入模块定义的变量名。模块可以由两个语句和一个重要的内置函数进行处理。
import: 使客户端(导入者)以一个整体获取一个模块。
from:容许客户端从一个模块文件中获取特定的变量名。
reload:在不中止Python程序的情况下,提供了一个重新载入模块文件代码的方法。

参考:http://ipseek.blog.51cto.com/1041109/795782

2、名称空间

一个名称空间就是从名称到对象的关系隐射集合。

每一个模块都定义的自己唯一的名称空间,如:

import s1,s2#s1.py,s2.py
s1.foo()
s2.bar()
s1.bar()    #由于每个模块都有唯一的名称空间,即使属性相同也不会发生冲突

向名称空间添加名称的操作过程涉及绑定标识符到指定对象的操作(以及给对象的引用计数加1)。

3、搜索路径和路径搜索

模块的导入需要叫做“路径搜索”的过程。

搜索路径:查找一组目录

路径搜索:查找某个文件的操作

ImportError: No module named myModule

这种错误就是说:模块不在搜索路径里,从而导致路径搜索失败!

导入模块时,不带模块的后缀名,比如.py
Python搜索模块的路径:
1)、程序的主目录
2)、PTYHONPATH目录(如果已经进行了设置)
3)、标准连接库目录(一般在/usr/local/lib/python2.X/)
4)、任何的.pth文件的内容(如果存在的话).新功能,允许用户把有效果的目录添加到模块搜索路径中去
.pth后缀的文本文件中一行一行的地列出目录。
这四个组建组合起来就变成了sys.path了,

>>> import sys
>>> sys.path
导入时,Python会自动由左到右搜索这个列表中每个目录。

二、模块导入

1、import语句

推荐:

import放在程序前面,且按照Python标准库模块、Python第三方模块、自定义模块的顺序从上到下排开。

2、from-import语句

可以导入模块中指定属性:from module import name1[,nam2[,...nameN]]

注意:

(1)、导入可使用\进行换行,

如:from module import nam1,name2,\
name3,name4....

(2)、不推荐from module import *

(3)、使用as更换名称:

from module import name1 as name2

3、模块导入的特征

(1)、载入时执行模块,也就是导入模块的顶层代码将会被执行,通常包括该模块内全局变量类和函数的声明。我们尽可能多的把代码封装到函数中,这是良好的模块编程习惯。

(2)、一个模块可被导入(import)多次,但是只加载(load)一次.

4、模块内建函数

(1)、__import__():导入模块的函数

import语句实际上调用__import__()函数

如果我们有一个testa.py文件,我们可以用module=__import__('testa')来导入它。这样可以用module.属性来使用testa.py中的属性

其他见书

三、包

 1、包的概念

包是一个有层次的文件目录结构,由模块和子包组成。

2、解析包机制:

每一个.py文件称为一个module,module之间可以互相导入

module可以定义在包里面.Python定义包的方式稍微有点古怪,假设我们有一个parent文件夹,该文件夹有一个child子文件夹.child中有一个module a.py . 如何让Python知道这个文件层次结构?很简单,每个目录都放一个名为_init

_.py 的文件.该文件内容可以为空.这个层次结构同上:
参考:http://huangliangfeixu.blog.163.com/blog/static/18974706220112741040442/
 
3、python中__init__.py文件的作用
 
python的每个模块的包中,都有一个__init__.py文件,有了这个文件,我们才能导入这个目录下的module。
那么,__init__.py还有什么别的功能呢?
其实,__init__.py里面还是可以有内容的,我们在导入一个包时,实际上导入了它的__init__.py文件。
 
4、导入
 
参考上面的图片
 
import web.web_catch
import web.child_web.demo
from web.child_web import demo
 

Python入门笔记(23):模块的更多相关文章

  1. Python入门之第三方模块安装

    Python入门之第三方模块安装 平台:Win10 x64 + Anaconda3-5.3.0 (+Python3.7.0) Issue说明:pip install line_profiler-2.1 ...

  2. python学习笔记_week5_模块

    模块 一.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能), 本质就是.py结尾的python文件(文件名:test.py,对应模块名:test) 包:用来从逻辑上 ...

  3. Python学习笔记-常用模块

    1.python模块 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失.因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作 ...

  4. Python学习笔记之模块与包

    一.模块 1.模块的概念 模块这一概念很大程度上是为了解决代码的可重用性而出现的,其实这一概念并没有多复杂,简单来说不过是一个后缀为 .py 的 Python 文件而已 例如,我在某个工作中经常需要打 ...

  5. Python入门基础学习(模块,包)

    Python基础学习笔记(五) 模块的概念:模块是python程序架构的一个核心概念 每个以拓展名py结尾的python源代码文件都是一个模块 模块名同样也是一个标识符,需要符合标识符的命名规则 在模 ...

  6. python学习笔记(八)-模块

    大型python程序以模块和包的形式组织.python标准库中包含大量的模块.一个python文件就是一个模块.1.标准模块 python自带的,不需要你安装的2.第三方模块 需要安装,别人提供的. ...

  7. Python学习笔记1—模块

    模块的使用 引用模块的两种形式 形式一: import module_name 形式二: from module1 import module11   (module11是module的子模块) 例: ...

  8. Python学习笔记2——模块的发布

    1.为模块nester创建文件夹nester,其中包含:nester.py(模块文件): """这是"nester.py"模块,提供了一个名为prin ...

  9. python学习笔记十——模块与函数

    第五章 模块与函数 5.1 python程序的结构 函数+类->模块              模块+模块->包                 函数+类+模块+包=Python pyth ...

随机推荐

  1. 菜鸟教程之工具使用(十二)——Eclipse突出显示选中的相同变量

    大家都知道在Eclipse中,选中一个变量或者方法名(或者说是一个单词),当前文件中跟他一样的变量会被突出显示,这个功能很好用.能让我们很方便的找到该变量在哪被用到了.前段时间我的Eclipse的这个 ...

  2. Java 中类的加载顺序

    如果类A和类B中有静态变量,静态语句块,非静态变量,非静态语句块,构造函数,静态方法,非静态方法,同时类A继承类B,请问当实例化A时,类内部的加载顺序是什么? 测试代码如下: Class B: pub ...

  3. 构建基于WinRT的WP8.1 App 01:页面导航及页面缓存模式

    本篇博文主要阐述基于Windows Runtime的Windows Phone 应用页面间导航相关知识,主要分为以下几个方面: Window.Frame和Page概览 页面间实现跳转 处理物理后退键 ...

  4. SZ,RZ传送文件

    linux 和window之间通过xshell的命令 SZ,RZ传送文件:

  5. android xml解析添加到listview中的问题

    一个问题不知什么原因,代码: public class OtherActivity extends ListActivity { @Override protected void onCreate(B ...

  6. 译:在ASP.NET中如何对cookies进行加密和解密

    译文地址:http://www.codeproject.com/Tips/872826/Encrypt-Decrypt-Cookies-in-ASP-NET 源代码:http://files.cnbl ...

  7. 解决clone问题之外的体会

    adlnkoh.sh started at Thu Aug 25 15:42:51 CST 2016 Log file located at /u02/db/testdb/11.1.0/appsuti ...

  8. golang 图片处理,剪切,base64数据转换,文件存储

    本文主要介绍: 1. 图片文件的读写. 2. 图片在go缓存中如何与base64互相转换 3. 图片裁剪 本文中,为了方便查看,去掉所有错误判断 base64 -> file ddd, _ := ...

  9. c/c++:动态库 静态库 linux/windows 例子 (转)

    作者:吴秦出处:http://www.cnblogs.com/skynet/本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). C++静 ...

  10. css3 画圆记录

    <style> .radar-wrapper * { -moz-box-sizing: border-box; box-sizing: border-box; margin:; paddi ...