前面已經洋洋灑灑地介紹了不少數據類型。不能再不顧一切地向前沖了,應當總結一下。這樣讓看官能夠從總體上對這些數據類型有所了解,如果能夠有一覽眾山小的感覺,就太好了。
下面的表格中列出了已經學習過的數據類型,也是python的核心數據類型之一部分,這些都被稱之為內置對象。
> 對象,就是你面對的所有東西都是對象,看官要逐漸熟悉這個稱呼。所有的數據類型,就是一種對象。英文單詞是object,直接的漢語意思是物體,這就好像我們在現實中一樣,把很多我們看到和用到的都可以統稱為“東西”一樣。“東西”就是“對象”,就是object。在編程中,那個所謂面向對象,也可以說成“面向東西”,是嗎?容易有歧義吧。
| 對象類型 | 舉例 |
| --- | --- |
| int/float | 123, 3.14 |
| str | 'qiwsir.github.io' |
| list | [1, [2, 'three'], 4] |
| dict | {'name':"qiwsir","lang":"python"} |
| tuple | (1, 2, "three") |
| set | set("qi"), {"q", "i"} |
不論任何類型的數據,只要動用dir(object)或者help(obj)就能夠在交互模式下查看到有關的函數,也就是這樣能夠查看相關幫助文檔了。舉例:
~~~
>>> dir(dict)
~~~
看官需要移動鼠標,就能夠看全(下面的本質上就是一個list):
~~~
['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']
~~~
先略過__雙下劃線開頭的哪些,看后面的,就是dict的內置函數。至于詳細的操作方法,通過類似help(dict.pop)的方式獲得。這是前面說過的,再說一遍,加深印象。
**我的觀點:學習,重要的是學習方法,不是按部就班的敲代碼。**
今天既然是復習,就要在原來基礎上提高一點。所以,也要看看上面那些以雙下劃線__開頭的東西,請看官找一下,有沒有發現這個:"__doc__"。這是什么,它是一個文件,里面記錄了對當前所查看的對象的詳細解釋。可以在交互模式下這樣查看:
~~~
>>> dict.__doc__
~~~
顯示應該是這樣的:
> "dict() -> new empty dictionary\ndict(mapping) -> new dictionary initialized from a mapping object's\n (key, value) pairs\ndict(iterable) -> new dictionary initialized as if via:\n d = {}\n for k, v in iterable:\n d[k] = v\ndict(**kwargs) -> new dictionary initialized with the name=value pairs\n in the keyword argument list. For example: dict(one=1, two=2)"
注意看上面亂七八糟的英文中,是不是有\n符號,這是什么?前面在講述字符串的時候提到了轉義符號\,這是換一行。也就是說,如果上面的文字,按照排版要求,應該是這樣的(當然,在文本中,如果打開,其實就是排好版的樣子)。
> "dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)"
可能排版還是不符合愿意。不過,看官也大概能看明白了。我要說的不是排版,要說的是告訴看官一種查看某個數據類型含義的方法,就是通過obj.__doc__文件來看。
嘿嘿,其實有一種方法,可以看到排版的結果的:
~~~
>>> print dict.__doc__
dict() -> new empty dictionary
dict(mapping) -> new dictionary initialized from a mapping object's
(key, value) pairs
dict(iterable) -> new dictionary initialized as if via:
d = {}
for k, v in iterable:
d[k] = v
dict(**kwargs) -> new dictionary initialized with the name=value pairs
in the keyword argument list. For example: dict(one=1, two=2)
~~~
上面那么折騰一下,就是為了湊篇幅,不然這個總結的東西太少了。
總之,只要用這種方法,你就能得到所有幫助文檔,隨時隨地。如果可以上網,到官方網站,是另外一種方法。
還需要再解釋別的嗎?都多余了。唯一需要的是看官要能會點英語。不過我相信看官能夠讀懂,我這個二把刀都不如的英語水平,還能湊合看呢,何況看官呢?
總結不是意味著結束,是意味著繼往開來。精彩還在后面,這里只是休息。今天還是周日。
## 主日崇拜
腓立比書 Philippians(3:13-14)
> Brethren, I count not myself to have apprehended: but this one thing I do, forgetting those things which are behind, and reaching forth unto those things which are before, I press toward the mark for the prize of the high calling of God in Christ Jesus.
>
> 弟兄們、我不是以為自己已經得著了.我只有一件事、就是忘記背後努力面前的, 向著標竿直跑、要得神在基督耶穌裡從上面召我來得的獎賞 。
### 忘記背后,努力面前,向著標桿直跑
- 第零部分 獨上高樓,望盡天涯路
- 嘮叨一些關于Python的事情
- 為什么要開設本欄目
- 第一部分 積小流,至江海
- Python環境安裝
- 集成開發環境(IDE)
- 數的類型和四則運算
- 啰嗦的除法
- 開始真正編程
- 初識永遠強大的函數
- 玩轉字符串(1):基本概念、字符轉義、字符串連接、變量與字符串關系
- 玩轉字符串(2)
- 玩轉字符串(3)
- 眼花繚亂的運算符
- 從if開始語句的征程
- 一個免費的實驗室
- 有容乃大的list(1)
- 有容乃大的list(2)
- 有容乃大的list(3)
- 有容乃大的list(4)
- list和str比較
- 畫圈還不簡單嗎
- 再深點,更懂list
- 字典,你還記得嗎?
- 字典的操作方法
- 有點簡約的元組
- 一二三,集合了
- 集合的關系
- Python數據類型總結
- 深入變量和引用對象
- 賦值,簡單也不簡單
- 坑爹的字符編碼
- 做一個小游戲
- 不要紅頭文件(1): open, write, close
- 不要紅頭文件(2): os.stat, closed, mode, read, readlines, readline
- 第二部分 窮千里目,上一層樓
- 正規地說一句話
- print能干的事情
- 從格式化表達式到方法
- 復習if語句
- 用while來循環
- 難以想象的for
- 關于循環的小伎倆
- 讓人歡喜讓人憂的迭代
- 大話題小函數(1)
- 大話題小函數(2)
- python文檔
- 重回函數
- 變量和參數
- 總結參數的傳遞
- 傳說中的函數條規
- 關于類的基本認識
- 編寫類之一創建實例
- 編寫類之二方法
- 編寫類之三子類
- 編寫類之四再論繼承
- 命名空間
- 類的細節
- Import 模塊
- 模塊的加載
- 私有和專有
- 折騰一下目錄: os.path.<attribute>
- 第三部分 昨夜西風,亭臺誰登
- 網站的結構:網站組成、MySQL數據庫的安裝和配置、MySQL的運行
- 通過Python連接數據庫:安裝python-MySQLdb,連接MySQL
- 用Pyton操作數據庫(1):建立連接和游標,并insert and commit
- 用Python操作數據庫(2)
- 用Python操作數據庫(3)
- python開發框架:框架介紹、Tornado安裝
- Hello,第一個網頁分析:tornado網站的基本結構剖析:improt模塊、RequestHandler, HTTPServer, Application, IOLoop
- 實例分析get和post:get()通過URL得到數據和post()通過get_argument()獲取數據
- 問候世界:利用GAE建立tornado框架網站
- 使用表單和模板:tornado模板self.render和模板變量傳遞
- 模板中的語法:tornado模板中的for,if,set等語法
- 靜態文件以及一個項目框架
- 模板轉義
- 第四部分 暮然回首,燈火闌珊處
- requests庫
- 比較json/dictionary的庫
- defaultdict 模塊和 namedtuple 模塊
- 第五部分 Python備忘錄
- 基本的(字面量)值
- 運算符
- 常用的內建函數
- 擴展閱讀(來自網絡文章)
- 人生苦短,我用Python