探秘簡單快捷的Python應用程序
在向大家詳細介紹Python應用程序之前,首先讓大家了解下什么是Python應用程序,然后全面介紹Python應用程序的種種特性,Python的Virtual Machine是一種更高級的Virtual Machine。
但是它不僅為開發者帶來許多讓人感興趣的特性,同時在性能方面也有所改善。在上一篇中,我們為讀者詳細介紹了Python應用程序在核心語言方面的變化,而本文則將要為讀者介紹新版本中標準程序庫方面的變化。
主要的新增物是一個有序字典類,使其有了自己的PEP。當遍歷一個排序后的字典的時候,您將得到一個鍵列表和一些值。并且其順序正是其插入的順序——這正是我們所希望的。 下面我們用一個實例來說明排序后的字典和常規字典之間的區別:
- import HTMLParser
- import urllib
- import sys
- #定義HTML解析器
- class parseLinks(HTMLParser.HTMLParser):
- def handle_starttag(self, tag, attrs):
- if tag == 'a':
- for name,value in attrs:
- if name == 'href':
- print value
- print self.get_starttag_text()
- #創建HTML解析器的實例
- lParser = parseLinks()
- #打開HTML文件
- lParser.feed(urllib.urlopen( \
- "http://www.python.org/index.html").read())
- lParser.close()
如您所見,有序字典維護有個元素的原始順序,而標準字典則沒有。不過有一點要注意,如果你使用命名參數而非鍵/值對來填充此字典的話。它就維護其順序。 也許這是一個bug。
因為使用命名參數是一種初始化字典的理想方式,并且個元素有一個明確的從左到右的順序。我們這里使用的元素與***個例子完全一樣:這個類可以使用一組典型的字典方法即keys()、values()和items()來訪問其內容;
不過,這個類的update()方法跟常規字典的update()方法有所不同。它可以接受序列或者值為整數的映射。如果使用的是序列。它會統計元素個數,并將其加到原先元素個數上。對于映射,它會統計該映射中的每個對象,并將結果加到原先的統計個數中。以下代碼對上面的示例中已經初始化過的Counter類進行更新:
- import HTMLParser
- import urllib
- import sys
- #定義HTML解析器
- class parseLinks(HTMLParser.HTMLParser):
- def handle_starttag(self, tag, attrs):
- if tag == 'a':
- for name,value in attrs:
- if name == 'href':
- print value
- print self.get_starttag_text()
- #創建HTML解析器的實例
- lParser = parseLinks()
- #打開HTML文件
- lParser.feed(urllib.urlopen( \
- "http://www.python.org/index.html").read())
- lParser.close()
Itertools模塊不僅可以處理無窮序列,而且還可以處理有限序列。在Python應用程序中,它引入了兩個新的函數:combinations_with_replacement()函數和compress()函數。
【編輯推薦】