第八章 模块和包.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第八章 模块和包.pdf》由会员分享,可在线阅读,更多相关《第八章 模块和包.pdf(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第八章第八章 模块和包模块和包本章的主题就是模块和包。较大的Python程序基本上都使用模块和包进行组织,Python发行版也包括方方面面许许多多的模块.1.1.1.1.1.1.1.1.模块模块你可以使用import语句将一个源代码文件作为模块导入.例如:Toggle line numbers lang=en id=CA-f0fb854d54813151de77c7aefc15bafc3c316ab6_000 dir=ltr1#file:spam.py2 a=37#一个变量3 def foo:#一个函数4print Im foo5 class bar:#一个类6def grok(self):7
2、print Im bar.grok8 b=bar()#创建一个实例使用import spam 语句就可以将这个文件作为模块导入。系统在导入模块时,要做以下三件事:为源代码文件中定义的对象创建一个名字空间,通过这个名字空间可以访问到模块中定义的函数及变量。2.在新创建的名字空间里执行源代码文件.3.创建一个名为源代码文件的对象,该对象引用模块的名字空间,这样就可以通过这个对象访问模块中的函数及变量,如:Toggle line numbers lang=en id=CA-af6d0500d6fe62cad1d45e8042a2f7f18e935b90_001 dir=ltr1import spam
3、#导入并运行模块 spam2print spam.a#访问模块 spam 的属性3spam.foo()4c=spam.bar()5.用逗号分割模块名称就可以同时导入多个模块:import socket,os,regex模块导入时可以使用 as 关键字来改变模块的引用对象名字:Toggle line numbers lang=en id=CA-2b1a71c7c83e1a22cae59eceff2d3670f384f2f5_002 dir=ltr1import os as system2 import socket as net,thread as threads3 system.chdir(.
4、)4 net.gethostname()使用from语句可以将模块中的对象直接导入到当前的名字空间.from语句不创建一个到模块名字空间的引用对象,而是把被导入模块的一个或多个对象直接放入当前的名字空间:Toggle line numbers lang=en id=CA-adbe7e7c7b340d1f45c448fdc05323eb6072e85f_003dir=ltr1from socket import gethostname2#将gethostname放如当前名字空间3 print gethostname()#直接调用4 socket.gethostname()#引发异常NameErr
5、or:socketfrom语句支持逗号分割的对象,也可以使用星号(*)代表模块中除下划线开头的所有对象:Toggle line numbers lang=en id=CA-14c1a6437b32579c97af1daffbe8565e08e307da_004dir=ltr1from socket import gethostname,socket2 from socket import*#载入所有对象到当前名字空间不过,如果一个模块如果定义有列表_all_,则from module import*语句只能导入_all_列表中存在的对象。#module:foo.py_all_=bar,spam
6、#定义使用*可以导入的对象另外,as 也可以和 from 联合使用:Toggle line numbers lang=en id=CA-58a328b76f70e07bc47e1efa6a5160184956e6ac_005dir=ltr1from socket import gethostname as hostname2 h=hostname()import 语句可以在程序的任何位置使用,你可以在程序中多次导入同一个模块,但模块中的代码*仅仅*在该模块被首次导入时执行。后面的import语句只是简单的创建一个到模块名字空间的引用而已。sys.modules字典中保存着所有被导入模块的模块名
7、到模块对象的映射。这个字典用来决定是否需要使用import语句来导入一个模块的最新拷贝.from module import*语句只能用于一个模块的最顶层.*特别注意*:由于存在作用域冲突,不允许在函数中使用from 语句。每个模块都拥有 _name_ 属性,它是一个内容为模块名字的字符串。最顶层的模块名称是_main_.命令行或是交互模式下程序都运行在_main_ 模块内部.利用_name_属性,我们可以让同一个程序在不同的场合(单独执行或被导入)具有不同的行为,象下面这样做:#检查是单独执行还是被导入if _name_=_main_:#Yesstatementselse:#No(可能被作为
8、模块导入)statements1.2.1.2.1.2.1.2.模块搜索路径模块搜索路径导入模块时,解释器会搜索sys.path列表,这个列表中保存着一系列目录。一个典型的sys.path 列表的值:Linux:,/usr/local/lib/python2.0,/usr/local/lib/python2.0/plat-sunos5,/usr/local/lib/python2.0/lib-tk,/usr/local/lib/python2.0/lib-dynload,/usr/local/lib/python2.0/site-packagesWindows:,C:WINDOWSsystem3
9、2python24.zip,C:DocumentsandSettingsweizhong,C:Python24DLLs,C:Python24lib,C:Python24libplat-win,C:Python24liblib-tk,C:Python24Libsite-packagespythonwin,C:Python24,C:Python24libsite-packages,C:Python24libsite-packageswin32,C:Python24libsite-packageswin32lib,C:Python24libsite-packageswx-2.6-msw-unicod
10、e空字符串代表当前目录.要加入新的搜索路径,只需要将这个路径加入到这个列表.1.3.1.3.1.3.1.3.模块导入和汇编模块导入和汇编到现在为止,本章介绍的模块都是包含Python源代码的文本文件.不过模块不限于此,可以被import 语句导入的模块共有以下四类:使用Python写的程序(.py文件)C或C+扩展(已编译为共享库或DLL文件)包(包含多个模块)内建模块(使用C编写并已链接到Python解释器内)当查询模块 foo 时,解释器按照 sys.path 列表中目录顺序来查找以下文件(目录也是文件的一种):定义为一个包的目录 foofoo.so,foomodule.so,foomod
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八章 模块和包 第八 模块
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内