Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19730579
  • 博文数量: 679
  • 博客积分: 10495
  • 博客等级: 上将
  • 技术积分: 9308
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-18 10:51
文章分类

全部博文(679)

文章存档

2012年(5)

2011年(38)

2010年(86)

2009年(145)

2008年(170)

2007年(165)

2006年(89)

分类: Python/Ruby

2009-09-01 07:13:54

模块

10.1 模块简介

             

       查找路径的设置:

       >>> import sys

>>> sys.path.append('c:/python')

       unix只能以绝对路径或者形式添加:sys.path.expanduser('~/python').

 

导入只会生效一次。

要强制重新加载:

>>> hello = reload(hello)

Hello, world!

3.0不会再有reload功能,可以使用exec,建议最好不要涉及到reload类似的功能。

查看系统路径:

>>> import sys, pprint

>>> pprint.pprint(sys.path)

pprint可以很好地处理较大的数据。

模块一般放在site-packages中。

       可以修改环境变量:PYTHONPATH.--这个在我的windows好像没有找到,估计IDE有自己的设置方法。也可以在.pth文中设置的

       模块以.py结尾,windows下还可以.pyw

       多个模块可以组合成包,它是包含__init__.py的目录。

 

10.2 探索模块

>>> import copy          

查看:dir(copy

>>> [n for n in dir(copy) if not n.startswith('_')]

['Error', 'PyStringMap', 'copy', 'deepcopy', 'dispatch_table', 'error', 'name', 't']

可以调用的查看方式:

copy.__all__

 

获取帮助:help(copy.copy),跟如下的效果是一样的。

查看源文件的位置:>>> print copy.__file__

C:\Python26\lib\copy.pyc

       一些python内置的库,比如sys;一些用c语言书写的库,是不能这样查看的。

                             §10.3 标准库介绍

       sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 重要的函数有:argvexit([arg])modulespathplatformstdinstdoutstderr等。

 

       os 模块:这个模块中的大部分函数通过对应平台相关模块实现, 比如 posix nt. os 模块会在第一次导入的时候自动加载合适的执行模块.重要的函数有environsystemseppathseplinesepurandom(n)

       environ用于修改环境变量;

       system执行外部程序,其他的类似命令有execv,会退出pythonpopen打开类似于文件的连接,不过subprocess模块集合了他们所有的功能;

       os.sep用于路径中的分隔符,unix中为斜杠,windows中是2个反斜杠。

       os.pathsep则为path路径的分隔符;

       os.linesep为行分隔符;

       urandom:返回加密的随机数

       比如打开火狐:unix中,os.system('/usr/bin/firefox')windowsos.system(r'c:\"Program Files"\"Mozilla Firefox"\firefox.exe')。加引号是为了防止不解释空格。也可以使用windows特有的函数:os.startfile(r'c:\Program Files\Mozilla Firefox\firefox.exe')windows程序与os.system (or os.startfile)同时运行,UNIXpython会等待os.system完成。其实打开网页还有更好的方法:

       import webbrowser

webbrowser.open('')

 

fileinput 模块允许你循环一个或多个文本文件的内容。重要的函数有:input([files[, inplace[, backup]])filename()lineno()filelineno()isfirstline()isstdin()nextfile()close()

       注意fileinput.lineno是多个文件累积的计数。文本文件的替换操作很简单. 只需要把 inplace 关键字参数设置为 1 , 传递给 input 函数, 该模块会帮你做好一切.

      

      

heaps(堆),对应的模块为heapq。函数有6个:heappush(heap, x)heappop(heap)heapify(heap)heapreplace(heap, x)nlargest(n, iter)nsmallest(n, iter)

 

>>> from heapq import *

>>> from random import shuffle

>>> data = range(10)

>>> shuffle(data)

>>> heap = []

>>> for n in data:

... heappush(heap, n)

>>> heap

[0, 1, 3, 6, 2, 8, 4, 7, 9, 5]

>>> heappush(heap, 0.5)

>>> heap

[0, 0.5, 3, 6, 1, 8, 4, 7, 9, 5, 2]

 

       i总大于i // 2,小于2*i and 2*i + 1).

      

       >>> heap

[0.5, 1, 5, 3, 2, 7, 9, 8, 4, 6]

>>> heapreplace(heap, 10)

0.5

>>> heap

[1, 2, 5, 3, 6, 7, 9, 8, 4, 10]

 

双端队列和其他集合:

>>> from collections import deque

>>> q = deque(range(5))

>>> q.append(5)

>>> q.appendleft(6)

>>> q

deque([6, 0, 1, 2, 3, 4, 5])

>>> q.pop()

5

>>> q.popleft()

6

>>> q.rotate(3)

>>> q

deque([2, 3, 4, 0, 1])

>>> q.rotate(-1)

>>> q

deque([3, 4, 0, 1, 2])

另外还有extendextend方法

 

其他模块待下次介绍。

 

       sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 重要的函数有:argvexit([arg])modulespathplatformstdinstdoutstderr等。

 

       os 模块:这个模块中的大部分函数通过对应平台相关模块实现, 比如 posix nt. os 模块会在第一次导入的时候自动加载合适的执行模块.重要的函数有environsystemseppathseplinesepurandom(n)

       environ用于修改环境变量;

       system执行外部程序,其他的类似命令有execv,会退出pythonpopen打开类似于文件的连接,不过subprocess模块集合了他们所有的功能;

       os.sep用于路径中的分隔符,unix中为斜杠,windows中是2个反斜杠。

       os.pathsep则为path路径的分隔符;

       os.linesep为行分隔符;

       urandom:返回加密的随机数

       比如打开火狐:unix中,os.system('/usr/bin/firefox')windowsos.system(r'c:\"Program Files"\"Mozilla Firefox"\firefox.exe')。加引号是为了防止不解释空格。也可以使用windows特有的函数:os.startfile(r'c:\Program Files\Mozilla Firefox\firefox.exe')windows程序与os.system (or os.startfile)同时运行,UNIXpython会等待os.system完成。其实打开网页还有更好的方法:

       import webbrowser

webbrowser.open('')

 

fileinput 模块允许你循环一个或多个文本文件的内容。重要的函数有:input([files[, inplace[, backup]])filename()lineno()filelineno()isfirstline()isstdin()nextfile()close()

       注意fileinput.lineno是多个文件累积的计数。文本文件的替换操作很简单. 只需要把 inplace 关键字参数设置为 1 , 传递给 input 函数, 该模块会帮你做好一切.

      

      

heaps(堆),对应的模块为heapq。函数有6个:heappush(heap, x)heappop(heap)heapify(heap)heapreplace(heap, x)nlargest(n, iter)nsmallest(n, iter)

 

>>> from heapq import *

>>> from random import shuffle

>>> data = range(10)

>>> shuffle(data)

>>> heap = []

>>> for n in data:

... heappush(heap, n)

>>> heap

[0, 1, 3, 6, 2, 8, 4, 7, 9, 5]

>>> heappush(heap, 0.5)

>>> heap

[0, 0.5, 3, 6, 1, 8, 4, 7, 9, 5, 2]

 

       i总大于i // 2,小于2*i and 2*i + 1).

      

       >>> heap

[0.5, 1, 5, 3, 2, 7, 9, 8, 4, 6]

>>> heapreplace(heap, 10)

0.5

>>> heap

[1, 2, 5, 3, 6, 7, 9, 8, 4, 10]

 

双端队列和其他集合:

>>> from collections import deque

>>> q = deque(range(5))

>>> q.append(5)

>>> q.appendleft(6)

>>> q

deque([6, 0, 1, 2, 3, 4, 5])

>>> q.pop()

5

>>> q.popleft()

6

>>> q.rotate(3)

>>> q

deque([2, 3, 4, 0, 1])

>>> q.rotate(-1)

>>> q

deque([3, 4, 0, 1, 2])

另外还有extendextend方法

阅读(4349) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~