• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
             http://wiki.woodpecker.org.cn/moin/PyAbsolutelyZipManual
            最新版
            • PyAbsolutelyZipManual

            Python 絕對(duì)簡(jiǎn)明手冊(cè) -- zsp007@gmail.com ::-- ZoomQuiet [2006-09-15 04:35:33]

            CPUG聯(lián)盟::

            CPUG::門戶

            BPUG

            SPUG

            ZPUG

            1. Py2.5 絕對(duì)簡(jiǎn)明手冊(cè)

            簡(jiǎn)述

            zuroc主動(dòng)在列表中分享

            PYthon絕對(duì)簡(jiǎn)明手冊(cè),初學(xué)必備!

            • -- For Python2.5

            版本:0.2 beta

            作者:張沈鵬

            參考:python2.5中文教程

            感謝:Zoom.Quiet limodou

            我的技術(shù)Blog 我的C++Blog 我的文學(xué)Blog

            1.1. 語(yǔ)法

            1.1.1. if

            Toggle line numbers
               1 x=int(raw_input("Please enter an integer:"))
            2 if x<0:
            3 print 'Negative Number'
            4 elif x==0:
            5 print 'Zero'
            6 else:
            7 print 'Positive Number'

            1.1.2. for

            Toggle line numbers
               1 a=['cat','door','example']
            2 for x in a:
            3 print x

            #如果要修改a的內(nèi)容,則用a的副本循環(huán),如:

            for x in a[:] : 
            .....................

            Toggle line numbers
               1 >>>range(10,0,-3)
            2 [10,7,4,1]
            3 a=['cat','door','example']
            4 for i in range(len(a)):
            5 print i,a[i]

            break,continue 用法和C++中類似

            1.1.3. pass

            while True: 
            pass #忽略,什么也不做

            Toggle line numbers
               1 def fib(n=1000):#參數(shù)可以有默認(rèn)值,多個(gè)可選參數(shù)賦值可以直接寫"參數(shù)變量名=值"來(lái)快速賦值 
            2 """這里給函數(shù)寫文檔注釋"""
            3 a,b=0,1
            4 while b<n:
            5 print b
            6 a,b=b,a+b

            #函數(shù)可以重命名,如

            Toggle line numbers
               1 f=fib
            2 f(223)

            1.1.4. in

            • Toggle line numbers
                 1 if 'yes' in  ('y','ye','yes'):print  'ok'

            1.1.5. 參數(shù)格式 **para

            #參數(shù)格式為 **para 表示接受一個(gè)字典,為 *para 表示接受一個(gè)元組

            Toggle line numbers
               1 def test(para1,*args,**dic):
            2 print para1
            3 for arg in args : print arg
            4 keys=dic.keys()
            5 keys.sort()
            6 for key in keys:print key ,':',dic[key]

            1.1.6. Lambda函數(shù)

            • Toggle line numbers
                 1 def make_incrementor(n):
              2 return lambda x: x+n
              3 f=make_incrementor(n)
              4 >>>f(0)
              5 42
              6 >>>f(1)
              7 43

            1.1.7. List的函數(shù)

            append(x)    追加到鏈尾 
            extend(L) 追加一個(gè)列表
            insert(i,x) 在位置i插入x
            remove(x) 刪除第一個(gè)值為x的元素,如果不存在會(huì)拋出異常
            pop([i]) 返回并刪除位置為i的元素,i未給定時(shí)默認(rèn)作用在最后一個(gè)元素.[i]表示i為可選的
            index(x) 返回第一個(gè)值為x的元素,不存在則拋出異常
            count(x) 返回x出現(xiàn)的次數(shù)
            sort() 排序
            reverse() 翻轉(zhuǎn),反轉(zhuǎn)

            filter(function函數(shù) , sequence序列)  返回sequence中使filer為true的

            map(function,sequence,[sequence...])  返回新的sequence,序列中值為對(duì)每個(gè)元素分別調(diào)用function.

            reduce(function,sequence,[init])  返回一個(gè)單值為,計(jì)算步驟為 :

            • 第1個(gè)結(jié)果=function(sequence[0],sequence[1])
            • 第2個(gè)結(jié)果=function(第1個(gè)結(jié)果,sequence[2])
            • 返回最后一個(gè)計(jì)算得值
            • 如果有init,則先調(diào)用

            function(init,sequence[0])  sequence只有一個(gè)元素時(shí),返回該元素,為空時(shí)拋出異常.

            1.1.8. 列表推導(dǎo)式

            freshfruit=['  banana  ','   loganberry  '] 
            >>>[weapon.strip() for weapon in freshfruit]
            ['banana','loganberry']
            vec=[2,4,6]
            >>>[3*x for x in vec if x>3]
            [12,18]
            >>>[(x,x**2) for x in vec] #一個(gè)元素一定要是一個(gè)sequence,而
            [x,x**2 for x in vec]是錯(cuò)誤的
            [(2,4),(4,16),(6,36)]
            vec2=[4,3,-9]
            [x*y for x in vec for y in vec2]
            [vec[i]+vec2[i] for i in range(len(vec))]
            [str(round(355/113.0,i)) for i in range(1,6)] #str()是轉(zhuǎn)換類型為可以打印的字符

            1.1.9. del

            Toggle line numbers
               1 a=[1,2,3,4,5,6]
            2 del a[0]
            3 >>>a
            4 [2,3,4,5,6]
            5 del a[2:4]
            6 >>>a
            7 [2,3,6]
            8 del a[:]
            9 >>>a
            10 []
            11 del a
            12 >>>a

            拋出異常

            1.1.10. 元組

            t=1234,5567,'hello' 
            x,y,z=t #拆分操作可以應(yīng)用于所有sequence
            >>>x
            1234
            u=t,(1,2,3)
            >>>u
            ((1234,5567,'hello'),(1,2,3))
            empty=() #空元組
            singleton='hi', #單個(gè)元素的元組

            1.1.11. set

            set(集合):無(wú)序不重復(fù)的元素集

            Toggle line numbers
               1 basket = ['apple','orange','apple','pear','apple','banana']
            2 fruit=set(basket)
            3 >>>fruit
            4 set(['orange', 'pear', 'apple', 'banana'])
            5 >>>'orange' in fruit
            6 True
            7 a=set('abracadabew')
            8 >>>a
            9 set(['a', 'c', 'b', 'e', 'd', 'r', 'w'])
            10 b=set('wajgwaoihwb')
            11 >>> b
            12 set(['a', 'b', 'g', 'i', 'h', 'j', 'o', 'w'])
            13 >>> a-b #差
            14 set(['c', 'r', 'e', 'd'])
            15 >>> a|b #并
            16 set(['a', 'c', 'b', 'e', 'd', 'g', 'i', 'h', 'j', 'o', 'r', 'w'])
            17 >>> a&b #交
            18 set(['a', 'b', 'w'])
            19 >>>a^b #(并-交)
            20 set(['c', 'e', 'd', 'g', 'i', 'h', 'j', 'o', 'r'])

            === dict ===

            字典:關(guān)鍵字為不可變類型,如字符串,整數(shù),只包含不可變對(duì)象的元組.列表等不可以作為關(guān)鍵字.如果列表中存在關(guān)鍵字對(duì),可以用dict()直接構(gòu)造字典.而這樣的列表對(duì)通常是由列表推導(dǎo)式生成的.

            Toggle line numbers
               1 tel={'jack':4098,'sape':4139}
            2 tel['guido']=4127
            3 >>> tel
            4 {'sape': 4139, 'jack': 4098, 'guido': 4127}
            5 >>>tel['jack']
            6 4098
            7 del tel['sape']
            8 >>>tel.keys()
            9 ['jack', 'guido']
            10 >>>tel.has_key('jack')
            11 True
            12 knight={'gallahad':'the pure','robin':'the brave'}
            13 for k,v in knight.iteritems():
            14 print k,v

            輸出:

            Toggle line numbers
               1 gallahad the pure
            2 robin the brave

            enumerate()返回索引位置和對(duì)應(yīng)的值

            Toggle line numbers
               1 for i,v in enumerate(['tic','tac','toe'])
            2 print i,v

            輸出: 0 tic

            1 tac

            2 toe

            1.1.12. zip

            zip用于多個(gè)sequence的循環(huán)

            Toggle line numbers
               1 questions=['name','quest','favorite color']
            2 answers=['lancelot','the holy grail','blue']
            3 for q,a in zip(questions,answers):
            4 print 'What is your %s ? It is %s.'%(q,a)

            輸出:

            What is your name ? It is lancelot. 
            What is your quest ? It is the holy grail.
            What is your favorite color ? It is blue.

            1.1.13. reversed反向循環(huán)

            Toggle line numbers
               1 for i in reversed(range(1,4)):
            2 print i

            輸出:

            3 
            2
            1

            1.1.14. sorted排序

            1.1.15. sequence比大小

            list<string<tuple(因?yàn)樽帜副碇衛(wèi)在s前...)

            同類比大小按照字典序

            1.1.16. 導(dǎo)入模塊

            模塊的查找路徑

            1.當(dāng)前的目錄

            2.環(huán)境變量PYTHONPATH所指的目錄列表

            3.python解釋器的安裝目錄

            如將代碼保存上述的一個(gè)目錄中的的fibo.py文件中,便可以

            Toggle line numbers
               1 import fibo
            2 fibo.function().............

            如果想直接使用fibo.function可以重命名這個(gè)函數(shù),如

            Toggle line numbers
               1 f=fibo.function
            2 f()

            也可以

            Toggle line numbers
               1 form fibo import function
            2 function()

            甚至可以form fibo import * 

            可以 form 包.子包.模塊 imort 函數(shù) 

            然后就直接使用該函數(shù),不需要加前綴

            1.1.17. 包

            引用推薦寫法為

            form 包 import 模塊

            幾個(gè)功能類似的模塊可以組合成一個(gè)包,

            比如一個(gè)可以處理.wav,.mp3,.wma等音頻文件的有類似如下結(jié)構(gòu):

            Sound/
            __init__.py
            Formats/
            __init__.py
            wavread.py
            wavwrite.py
            mp3read.py
            mp3write.py
            wmaread.py
            wmawrite.py
            Effects/
            __init__.py
            echo.py
            surround.py
            reverse.py

            只有當(dāng)init.py存在時(shí)python才將該文件夾視為一個(gè)包,該文件可以為空文件 一般在init.py文件中定義一個(gè)all列表,包含要import *時(shí)要導(dǎo)入的模塊. 如Sound/Effects/init.py可以有如下內(nèi)容

            __all__=["echo","surround","reverse"]

            包的作者在發(fā)布包時(shí)可以更新這個(gè)列表,也可以根據(jù)需要讓某個(gè)模塊不支持import *

            對(duì)于包中同一個(gè)文件夾下的模塊可以把

            form 包.子包 imort 模塊

            簡(jiǎn)寫為 imort 模塊

            1.1.18. 格式化輸出

            for x in xrange(1,11): 
            print repr(x).rjust(2),repr(x*x).rjust(3)
            #repr是將變量類型轉(zhuǎn)換為可以被編譯器處理的文字格式
            #rjust是調(diào)整寬度為參數(shù)個(gè)字符,r表示右對(duì)齊;ljust為左對(duì)齊,ljust(n)[:n]可
            以截?cái)噍敵?center為居中
            #zfill()可以向數(shù)值表達(dá)式的左側(cè)填充0

            1.1.19. 等效代碼

            for x in xrange(1,11): 
            print '%2d %3d' % (x,x*x)
            #%10s 表示用str轉(zhuǎn)化為字符串
            #小數(shù)輸出如 %5.3f

            對(duì)于字典可以用變量名來(lái)直接格式化,如:

            >>>table={'Sjoerd':4127,'Jack':4098,'Dcab':8637678} 
            >>>print 'Jack:%(Jack)d; Sjoerd:%(Sjoerd)d; Dcab:%(Dcab)d' %
            table
            Jack:4098; Sjoerd:4127; Dcab:8637678

            同時(shí),函數(shù)vars()返回包含所有變量的字典,配合使用,無(wú)堅(jiān)不摧!

            1.1.20. 讀寫文件:

            f=open('/tmp/hello','w')

            #open(路徑+文件名,讀寫模式)

            #讀寫模式:r只讀,r+讀寫,w新建(會(huì)覆蓋原有文件),a追加,b二進(jìn)制文件.常用模式

            如:'rb','wb','r+b'等等

            f.read([size]) size未指定則返回整個(gè)文件,如果文件大小>2倍內(nèi)存則有問(wèn)題.f.read()讀到文件尾時(shí)返回""(空字串)

            file.readline() 返回一行

            file.readline([size]) 返回包含size行的列表,size 未指定則返回全部行

            for line in f: #交換通道

            • print line

            f.write("hello\n") #如果要寫入字符串以外的數(shù)據(jù),先將他轉(zhuǎn)換為字符串.

            f.tell() 返回一個(gè)整數(shù),表示當(dāng)前文件指針的位置(就是到文件頭的比特?cái)?shù)).

            f.seek(偏移量,[起始位置])

            用來(lái)移動(dòng)文件指針

            偏移量:單位:比特,可正可負(fù)

            起始位置:0-文件頭,默認(rèn)值;1-當(dāng)前位置;2-文件尾

            f.close() 關(guān)閉文件


            1.1.21. pickle

            pickle 序列化/保存對(duì)象/封裝

            pickle.dump(x,f) #把文件對(duì)象f保存到x變量中

            x=pickle.load(f) #還原這個(gè)對(duì)象


            try:

            • .............

            except 異常類型:

            #如果有多個(gè)異常類型,可以將他們放在括號(hào)()中

            #如except(RuntimeError,TypeError,NameError):

            • ..............

            最后一個(gè)異常名可以省略異常類型,作為通配項(xiàng)將所有異常pass.慎用!!!

            在except后可以包含一個(gè)else

            raise可以拋出異常,同時(shí)可以附帶異常參數(shù)

            try:

            • rasie Exception('message1','message2') #只有一個(gè)參數(shù)時(shí)也可以這樣寫rasie Exception,'message1'

            except Exception,inst:

            • #inst是該異常類的一個(gè)實(shí)例 print inst.args #打印出參數(shù)名

              print inst #直接打印str屬性 x,y=inst print 'x=',x print 'y=',y

            如果拋出異常沒(méi)有指定參數(shù),則捕獲異常時(shí)的參數(shù)包含的是該異常的默認(rèn)信息

            >>>try:

            • 1/0

            Handling run-time error:integer division or modulo by zero


            自定義異常:慣例是以Error結(jié)尾的類,同類的異常一般派生自同一個(gè)基類,基類異常可以匹配派生類異常

            class MyError(Exception):

            • def init(self,value):

              • self.value=value

              def str(self):

              • return reper(self.value)

            try:

            except MyError,e:

            • print 'My exeception occurred,value',e.value

            >>>

            My exeception occurred,value 4


            finally:和C++中類似,即使是break,continue或return后一樣會(huì)執(zhí)行。一般用于釋放資源,如文件,網(wǎng)絡(luò)連接。

            def divide(x,y):

            • try:
              • try:
                • result=x/y

                except ZeroDivisionError:

                • print "zero"
                else:
                • print 'result=',result
              finally:
              • print 'finish'

            with #with可以幫助你自動(dòng)釋放資源,下一個(gè)版本可用

            with open('myfile.txt') as f:

            • for line in f:
              • print line

            #該文件會(huì)自動(dòng)被釋放


            1.1.22. 初識(shí)類

            class ClassName:

            • "類文檔,可以通過(guò)類名.doc訪問(wèn)"

              #類的私有變量是至少以雙下劃線開(kāi)頭,最多以單下劃線結(jié)尾的類變量,調(diào)用時(shí)會(huì)變量名會(huì)被混淆成 _ClassName變量名 i=12345 def f(self)

              • return "hello world"
            • def init(self):

              • "構(gòu)造函數(shù),可以初始化變量,可以有參數(shù)" #可以通過(guò)self調(diào)用當(dāng)前類的函數(shù)和數(shù)據(jù) self.data=[]

            #創(chuàng)建類實(shí)例

            x=ClassName()

            #給類的方法重命名

            xf=ClassName.f


            1.1.22.1. 類繼承

            class DerivedClassName(BassClassName):

            • ...................................

            如果基類定義在另一個(gè)模塊中, 要寫成

            modname.BaseClassName

            派生類的函數(shù)會(huì)覆蓋基類的同名函數(shù),如果想擴(kuò)充而不是改寫基類的函數(shù),可以這樣調(diào)用基類函數(shù)

            BaseClassName.methodname(self,arguments)

            注意:該基類要在當(dāng)前全局域或被導(dǎo)入


            1.1.22.2. 多重繼承

            類多繼承//小心使用

            class DerivedClassName(Base1,Base2,Base3):

            .................

            對(duì)于一個(gè)函數(shù)的解析規(guī)則是深度優(yōu)先,先是Base1,然后是Base1的基類,諸如此類.


            1.1.23. Iterators 迭代器

            for element in [1,2,3]:

            • print element

            for key in {'one':1,'two':2}:

            • print key

            for line in open("my.txt"):

            • print line

            在容器中定義next()逐一返回元素,并在迭代完成時(shí)拋出StopIteration異常,然后定義iter()返回self,便可以for...in循環(huán)

            用Generators(生成器)可以快速生成一個(gè)序列,在調(diào)用next()時(shí)依次返回序列中的值.

            def reverse(data):

            • for index in range(len(data)-1,-1,-1):
              • yield data[index]

            #yield會(huì)自動(dòng)創(chuàng)建next()和iter(),每次調(diào)用next()時(shí)yield會(huì)進(jìn)行下一步循環(huán),并在yield處返回值


            1.1.24. 生成器表達(dá)式

            生成器表達(dá)式:類似于沒(méi)有中括號(hào)的列表推導(dǎo)式,可用在參數(shù)中

            >>>sum(i*i for i in range(10))

            285

            >>>xvec=[10,20,30]

            >>>yvec=[7,5,3]

            >>>sum(x*y for x,y in zip(xvec,yvec))

            • 260

            >>>from math import pi,sin

            >>>sine_table=dict((x,sin(x*pi/180) for x in range(1,91))

            >>>unique_words=set(word for line in page for word in line.split())

            >>>data='golf'

            >>>list(data[i] for i in range(len (data)-1,-1,-1))

            ['f','l','o','g']


            1.2. 常用函數(shù)不完全手冊(cè)

            dir(模塊) #來(lái)獲取模塊的函數(shù)/變量列表

            help(模塊/函數(shù)) #獲取相關(guān)的幫助


            模塊:os

            • 與操作系統(tǒng)相關(guān)的函數(shù)

            例:

            import os

            os.getcwd() #當(dāng)前腳本的工作目錄

            os.chidr() #改變當(dāng)前工作目錄


            模塊:shutil

            • 目錄和文件管理的接口

            例:

            import shutil

            shutil.copyfile('data.txt','archive.txt')

            shutil.move('/build/a.txt','b.txt')


            模塊:glob

            生成文件列表,支持通配符

            例:

            import glob

            >>>glob.glob('*.py')

            ['primes.py','random.py','quote.py']


            模塊:sys

            提供命令行參數(shù),錯(cuò)誤輸出重定向和腳本終止

            例:

            命令行參數(shù)

            如執(zhí)行python demo.py one,two,three后

            import sys

            print sys.argv

            會(huì)輸出

            ['demo.py','one','two','three']

            終止腳本

            sys.exit()

            錯(cuò)誤輸出重定向,可以在stdout被重定向時(shí)顯示錯(cuò)誤信息

            >>>sys.stderr.write('Warning , log file not found starting a new one\n')

            Warning , log file not found starting a new one


            模塊:re

            字符正值表達(dá)式匹配

            例:

            import re

            >>>re.findall(r'\bf[a-z]*','which foot or hand fell fastest')

            ['foot','fell','fastest']

            >>>re.sub(r'(\b[a-z]+)\l',r'\l','cat in the hat')

            'cat in the hat


            模塊:math

            為浮點(diǎn)運(yùn)算提供了底層C函數(shù)庫(kù)的訪問(wèn)

            例:

            >>>math.cos(math.pi/4.0)

            0.70710678118654757

            >>>math.log(1024,2)

            10.0


            模塊:random

            生成隨機(jī)數(shù)

            例:

            import random

            >>>random.choice(['apple','pear','banana'])

            'apple'

            >>> random.sample(xrange(100),10) #隨機(jī)值不會(huì)重復(fù)

            [20,42,12,44,57,88,93,80,75,56]

            >>>random.random()

            0.26676389968666669

            >>> random.randrange(10)

            7


            模塊:urblib2

            打開(kāi)url地址

            例:

            for line in urllib2.urlopen('http:\\www.python.org\')

            • print line

            模塊:smtplib

            發(fā)送電子郵件

            例:

            sever=smtplib.smtp('localhost')

            sever.sendmail('zsp007@gmail.com','zuroc@163.com')

            """TO:zsp007@gmail.com

            From:zuroc@163.com

            """

            sever.quit()


            模塊:datetime

            時(shí)間日期相關(guān)算法以及格式化輸出

            例:

            from datetime import date

            now=date.today

            >>>now

            datetime.date(2006, 9, 13)

            >>>now.strftime("%m-%d-%y . %d %b %Y is a %A on the %d day of %B . ")

            '09-13-06 . 13 Sep 2006 is a Wednesday on the 13 day of September . '

            birthday=date(1986,6,30)

            age=now-birthday

            >>> age.days

            7380


            模塊:zipfile / tarfile

            數(shù)據(jù)打包和壓縮,支持格式:zlib,gzip,bz2,zipfile和tarfile

            例:

            import zlib

            s="which which which which"

            • t=zlib.compress(s)

            >>>len(s)

            23

            >>>len(t)

            16

            >>>zlib.decompress(t)

            "which which which which"

            >>>zilb.crc(32)

            -487390043


            模塊:timeit

            性能測(cè)試

            例:

            from timeit import Timer

            #Timer的第一個(gè)參數(shù)是要測(cè)試時(shí)間的語(yǔ)句,第二個(gè)參數(shù)是初始化

            #timeit的參數(shù)是測(cè)試語(yǔ)句的執(zhí)行次數(shù),默認(rèn)執(zhí)行1000000次

            >>> Timer('t=a;a=b;b=t','a=1;b=2').timeit()

            0.31399409701512582

            >>> Timer('a,b=b,a','a=1;b=2').timeit()

            0.247945758469313663

            模塊:profile和pstats提供了對(duì)更大代碼塊的測(cè)量工具


            模塊:doctest

            質(zhì)量測(cè)試,測(cè)試代碼.

            他將對(duì)函數(shù)文檔中的測(cè)試代碼進(jìn)行測(cè)試,他使文檔的撰寫和軟件的測(cè)試融合了起來(lái)

            例:

            def average(values):

            • """Computer average

            #注意>>> 和測(cè)試代碼之間要空一格,測(cè)試結(jié)果前面不要有空格

            >>> print average([10,90,53])

            51.0

            • """ return sum(values,0.0)/len(values)

            import doctest

            doctest.testmod()


            模塊:unittest

            可以在一個(gè)獨(dú)立的文件中提供一個(gè)更全面的代碼測(cè)試.

            例:

            import unittest

            class TestStatisticalFunctions(unittest.TestCase):

            • def test_average(self):
              • self.assertEqual(average([20,30,70]),40.0) self.assertEqual(round([1,5,7]),1)

                self.assertRaises(ZeroDivisionError,average,[])

                self.assertRaises(TypeError,average,20,30,70)

            unittest.main()


            其他一些常用模塊

            xmlrpclib和SimpleXMLRPCServer可以在瑣碎的任務(wù)中調(diào)用遠(yuǎn)程過(guò)程

            email可以構(gòu)建和解析復(fù)雜的消息結(jié)構(gòu),包括附件,文字編碼和頭協(xié)議等等

            xml.dom和xml.sax

            csv通用數(shù)據(jù)庫(kù)中直接讀寫

            gettext,locale,codecs國(guó)際化(i18n)支持


            模塊:pprint

            美化打印(pretty printer)

            例:

            import pprint

            t=[[ ['blue','cyan'] ,['green','red'],'yellow' ],'while']

            >>> pprint.pprint(t,width=30)

            [[['blue', 'cyan'],

            • ['green', 'red'], 'yellow'],
            • 'while']

            模塊:textwrap

            格式化段落來(lái)適應(yīng)行寬

            例:

            import textwrap

            doc="""Object for wrapping/filling text. The public interface consists of the wrap() and fill() methods; the other methods are just there for subclasses to override in order to tweak the default behaviour. If you want to completely replace the main wrapping algorithm, you'll probably have to override _wrap_chunks()."""

            >>> print textwrap.fill(doc,width=40)

            Object for wrapping/filling text. The

            public interface consists of the wrap()

            and fill() methods; the other methods

            are just there for subclasses to

            override in order to tweak the default

            behaviour. If you want to completely

            replace the main wrapping algorithm,

            you'll probably have to override

            _wrap_chunks().


            模塊:locale

            國(guó)際化

            例:

            import locale

            locale.setlocale(locale.LC_ALL,'English_United States.1252')

            x=1234567.8

            >>>locale.format("%d",x,grouping=True)

            '1,234,567'

            conv=locale.localeconv()

            >>> locale.format("%s%.*f",(conv['currency_symbol'],conv['frac_digits'],x),grouping=True)

            '$1,234,567.80'


            模塊:string.template

            生成句子的模版,輸入"張沈鵬",生成"大家好,我的名字是張沈鵬."

            例:

            from string import Template

            t=Template('${village}flok send $$10 to $cause')

            t.substitute(village='Nottingham',cause='the ditch fund')

            'Nottinghamflok send $10 to the ditch fund'

            當(dāng)占位符沒(méi)有提供時(shí)substitute會(huì)拋出KeyError的異常

            而safe_substitute可以在占位符提供不完整時(shí)保留占位符,而不拋出異常


            模塊:struct

            用于讀取二進(jìn)制格式的文件

            例:#H 代表unsigned short , read(2)因?yàn)閡nsigned short占2個(gè)bytes

            #L 代表4字節(jié)的無(wú)符號(hào)整數(shù)

            data=open('myfile.zip','rb').read()

            start=0

            for i in xrange(3):

            • start+=14 fields=struct.unpack('LLLHH',data[start:start+16]) crc32,comp_size,uncompsize,filenamesize,extra_size=fields start+=16 filename=data[start:start+filenamesize] start+=filenamesize extra=data[start:start+extra_size] print filename,hex(crc32),comp_size,uncomp_size start+=extra_size+comp_size #下一個(gè)頭文件

            模塊:threading

            線程

            例:

            import threading,zipfile

            class AsyncZip(threading.Thread)

            • def init(self , infile , outfile):

              • self.infile=infile self.outfile=outfile
              def run(self):
              • f=zipfile.ZipFile(self.outfile , 'w' , zipfile.DEFLATED) f.write(self.infile) f.close() print 'Finished background zip of: ', self.infile

            background=AsyncZip('mydata.txt','myarchive.zip')

            background.start()

            print 'The main program continues to run in foreground'

            background.join() #Wait for the background task finish

            print 'Main program waitwd until background was done .'


            • 模塊:Queue 協(xié)多線程的資源調(diào)用

            模塊:logging

            日志

            例:

            import logging

            logging.debug('Debugging information')

            logging.info('Information message')

            logging.warning('Warning:coinfig file %s not found','server.conf')

            logging.error('Error occurred')

            logging.critical('Critical error -- shutting down')

            輸出:

            WARNING:root:Warning:config file server.conf not found

            ERROR:root:Error occurred

            CRITICAL:root:Critical error -- shutting down


            模塊:wearef

            不創(chuàng)建引用來(lái)跟蹤對(duì)象

            例:

            >>>import weakref,gc

            >>>class A :

            ...def init (self,value):

            ... self.value=value

            ...def repr(self):

            ... return str(self.value)

            ...

            >>>a=A(10) #create a reference

            >>>d=weakref.WeakValueDictionary()

            >>>d[’primary’]=a #does not create a reference

            >>>d[’primary’] #fetch the object if it is still alive

            10

            >>>del a #remove the one reference

            >>>gc.collect() #run garbage collection right away

            0

            >>>d[’primary’] #entry was automatically removed

            Traceback(mostrecentcalllast):

            File "<pyshell#108>",line1,in-toplevel-

            d[’primary’] #entry was automatically removed

            File "C:/PY24/lib/weakref.py" , line46 , in getitem

            o = self.data[key]()

            KeyError:’primary’


            • 模塊:array 類似列表的對(duì)象,比默認(rèn)的列表更緊湊,僅用來(lái)存儲(chǔ)數(shù)據(jù) 例: from array import array

            #存儲(chǔ)雙字節(jié)無(wú)符號(hào)整數(shù),編碼類型為H a=array('H',[4000,10,700,22222])

            >>> sum(a)

            26932

            >>>a[1:3]

            array('H',[10,700])


            模塊:collections

            提供了類似列表的deque對(duì)象,它從左邊添加(append)和彈出(pop)更快,但在內(nèi)部查詢更慢.適用于隊(duì)列的實(shí)現(xiàn)和廣度優(yōu)先樹(shù)的搜索

            例:

            from collection import deque

            d=dequetask1","task2","task3

            d.append("task4")

            >>>print "Handling",d.popleft()

            Handling task1

            unsearched=deque([start_nodel])

            def breadth_first_search(unsearched):

            • node=unsearch.popleaf() for m in gen_moves(node):
              • if is_goal(m):
                • return m
                unsearched.append(m)

            模塊:bisect

            操作存儲(chǔ)列表

            例:

            import bisect

            scores=[(100,'perl'),(200,'tcl'),(400,'lua'),(500,'python')]

            bisect.insort(scores,(300,'ruby'))

            >>>scores

            [(100, 'perl'), (200, 'tcl'), (300, 'ruby'), (400, 'lua'), (500, 'python')]


            模塊:heapq

            提供基于正常列表的堆實(shí)現(xiàn),最小總是第一個(gè)元素(0點(diǎn)),對(duì)希望循環(huán)訪問(wèn)最小元素但不想執(zhí)行完整堆排列非常有用

            例:

            from heapq import heapify,heappop,heappush

            data=[1,3,5,6,7,8,9,65,0]

            heapify(data)

            heappush(data,-5)

            [heappop(data) for i in range(3) ]

            >>> [heappop(data) for i in range(3) ]

            [-5, 0, 1]


            • 模塊:decimal

            提供了一個(gè)Decimal數(shù)據(jù)類型,用于浮點(diǎn)數(shù)高精度的計(jì)算,高精度使Decimal可以執(zhí)行二進(jìn)制浮點(diǎn)數(shù)無(wú)法進(jìn)行的模運(yùn)算和等值測(cè)試

            例:

            from decimal import *

            >>>Decimal('0.70')*Decimal('1.05'))

            0.7350

            >>> .70*1.05

            0.73499999999999999

            >>>sum([Decimal('0.1')*10==Decimal('1.0')])

            True

            >>>sum([0.1*10])==1.0

            False

            >>>Decimal('1.00')%Decimal('.10')

            Decimal("0.00")

            >>> 1.00%0.10

            0.09999999999999995

            getcontext().prec=36

            >>>print Decimal(1)/Decimal(7)

            0.142857142857142857142857142857142857



             
            posted on 2006-09-14 22:08 張沈鵬 閱讀(1536) 評(píng)論(7)  編輯 收藏 引用
            Comments
            • # re: 讀書(shū)筆記---Python絕對(duì)簡(jiǎn)明手冊(cè)(個(gè)人認(rèn)為Python是C++的最佳拍檔)
              chenger
              Posted @ 2006-09-14 23:03
              Dive into Python是本好書(shū)
              入門的話A Byte of Python很不錯(cuò),我是一口氣看完的。都有中文電子版。
                回復(fù)  更多評(píng)論   
            • # re: 讀書(shū)筆記---Python絕對(duì)簡(jiǎn)明手冊(cè)(個(gè)人認(rèn)為Python是C++的最佳拍檔)
              *_*
              Posted @ 2006-09-18 12:29
              有python開(kāi)發(fā)GUI方面的資料嗎?最好結(jié)合c++的  回復(fù)  更多評(píng)論   
            • # re: 讀書(shū)筆記---Python絕對(duì)簡(jiǎn)明手冊(cè)(個(gè)人認(rèn)為Python是C++的最佳拍檔)
              張沈鵬
              Posted @ 2006-09-18 23:09
              初學(xué),不清楚  回復(fù)  更多評(píng)論   
            • # re: 讀書(shū)筆記---Python絕對(duì)簡(jiǎn)明手冊(cè)(個(gè)人認(rèn)為Python是C++的最佳拍檔)
              張沈鵬
              Posted @ 2006-10-05 13:08
              有python開(kāi)發(fā)GUI方面的資料嗎?最好結(jié)合c++的
              wxpython  回復(fù)  更多評(píng)論   
            • # re: 讀書(shū)筆記---Python絕對(duì)簡(jiǎn)明手冊(cè)(個(gè)人認(rèn)為Python是C++的最佳拍檔)
              caixiaofutiger@gmail.com
              Posted @ 2006-10-07 16:10
              請(qǐng)問(wèn)一下,python如何和C++聯(lián)系起來(lái),可以用boost_python但沒(méi)有裝起我用的是py2.5  回復(fù)  更多評(píng)論   
            • # re: 讀書(shū)筆記---Python絕對(duì)簡(jiǎn)明手冊(cè)(個(gè)人認(rèn)為Python是C++的最佳拍檔)
              zuroc
              Posted @ 2006-10-07 23:05
              沒(méi)有裝起?
              哪兒出了問(wèn)題?  回復(fù)  更多評(píng)論   
            • # re: 讀書(shū)筆記---Python絕對(duì)簡(jiǎn)明手冊(cè)(個(gè)人認(rèn)為Python是C++的最佳拍檔)
              cxf
              Posted @ 2006-10-12 15:40
              你用的python2.5還是2.4boost1-33-1么,你可以把boost_python的dl和庫(kù)文件發(fā)給我么,我不想編譯boost了,編譯一次太久了caixiaofutiger@gmail.com  回復(fù)  更多評(píng)論   

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


             
            久久久久亚洲AV无码专区桃色 | 久久综合伊人77777| 国产成人无码精品久久久久免费| 精品久久久久久综合日本| 国产亚洲精午夜久久久久久 | 久久99国产精品尤物| 久久九九青青国产精品| 一本色道久久综合狠狠躁篇| 久久久无码精品亚洲日韩按摩 | 国内精品久久久久久99蜜桃| 99久久亚洲综合精品成人| 久久婷婷色香五月综合激情| 无码日韩人妻精品久久蜜桃| 一级做a爱片久久毛片| 久久精品国产亚洲AV蜜臀色欲| 2021久久国自产拍精品| 久久中文字幕精品| 国产ww久久久久久久久久| 国产亚洲综合久久系列| 中文精品久久久久人妻| 国产精品亚洲综合专区片高清久久久| 亚洲欧美久久久久9999| 国内精品免费久久影院| 波多野结衣中文字幕久久 | 久久亚洲欧美日本精品| 无码专区久久综合久中文字幕| 久久久久国产| 国产成人精品久久亚洲高清不卡| 亚洲狠狠婷婷综合久久蜜芽| 亚洲一区精品伊人久久伊人| 狠狠人妻久久久久久综合蜜桃| 国产欧美久久久精品| 国内精品人妻无码久久久影院 | 国产精品嫩草影院久久| 99精品久久精品| 国产亚洲欧美精品久久久| 久久婷婷五月综合色高清 | 91精品国产高清久久久久久io | 久久99久久99小草精品免视看| 2021久久精品免费观看| 久久国产精品无|