在學生時代,就羨慕實驗室,老師在里面可以鼓搗各種有意思的東西。上大學的時候,終于有機會在實驗室做大量實驗了,因為我是物理系,并且,遇到了一位非常令我尊敬的老師——高老師,讓我在他的實驗室里面,把所有已經破舊損壞的實驗儀器修理裝配好,并且按照要求做好實驗樣例。經過一番折騰,才明白,要做好實驗,不僅僅花費精力,還有不菲的設備成本呢。后來工作的時候,更感覺到實驗設備費用之高昂,因此做實驗的時候總要小心翼翼。
再后來,終于發現原來計算機是一個最好的實驗室。在這里做實驗成本真的很低呀。
扯的遠了吧。不遠,現在就扯回來。學習Python,也要做實驗,也就是嘗試性地看看某個命令到底什么含義。通過實驗,研究清楚了,才能在編程實踐中使用。
怎么做Python實驗呢?
## 走進Python實驗室
在[《集成開發環境(IDE)》](https://github.com/qiwsir/ITArticles/blob/master/BasicPython/102.md)一章中,我們介紹了Python的IDE時,給大家推薦了IDLE,進入到IDLE中,看到>>>符號,可以在后面輸入一行指令。其實,這就是一個非常好的實驗室。
另外一個實驗室就是UNIX操作系統(包含各種Linux和Mac OSx)的shell,在打開shell之后,輸入python,出現如下圖所示:
[](https://github.com/qiwsir/ITArticles/blob/master/Pictures/11201.png)
如果看官是用windows的,也能夠通過cmd來獲得上圖類似的界面,依然是輸入python,之后得到界面。
在上述任何一個環境中,都可以輸入指令,敲回車鍵運行并輸出結果。
在這里你可以隨心所欲實驗。
## 交互模式下進行實驗
前面的各講中,其實都使用了交互模式。本著循序漸進、循環上升的原則,本講應該對交互模式進行一番深入和系統化了。
### 通過變量直接顯示其內容
從例子開始:
~~~
>>> a="http://qiwsir.github.io"
>>> a
'http://qiwsir.github.io'
>>> print a
http://qiwsir.github.io
~~~
當給一個變量a賦值于一個字符串之后,輸入變量名稱,就能夠打印出字符串,和print a具有同樣的效果。這是交互模式下的一個特點,如果在文件模式中,則不能,只有通過print才能打印變量內容。
### 縮進
~~~
>>> if bool(a):
... print "I like python"
...
I like python
~~~
對于if語句,在上一講[《從if開始語句的征程》](https://github.com/qiwsir/ITArticles/blob/master/BasicPython/111.md)中,已經注意到,if下面的執行語句要縮進四個空格。在有的python教材中,說在交互模式下不需要縮進,可能是針對python3或者其它版本,我使用的是python2.7,的確需要縮進。上面的例子就看出來了。
看官在自己的機器上測試一下,是不是需要縮進?
### 報錯
在一個廣告中看到過這樣一句話:程序員的格言,“不求最好,只求報錯”。報錯,對編程不是壞事。如何對待報錯呢?
**一定要認真閱讀所提示的錯誤信息。**
還是上面那個例子,我如果這樣寫:
~~~
>>> if bool(a):
... print "I like python"
File "<stdin>", line 2
print "I like python"
^
IndentationError: expected an indented block
~~~
從錯誤信息中,我們可以知道,第二行錯了。錯在什么地方呢?python非常人性化就在這里,告訴你錯誤在什么地方:
IndentationError: expected an indented block
意思就是說需要一個縮進塊。也就是我沒有對第二行進行縮進,需要縮進。
另外,順便還要提醒,>>>表示后面可以輸入指令,...表示當前指令沒有結束。要結束并執行,需要敲擊兩次回車鍵。
### 探索
如果看官對某個指令不了解,或者想試試某種操作是否可行,可以在交互模式下進行探索,這種探索的損失成本非常小,充其量就是報錯。而且從報錯信息中,我們還能得到更多有價值的內容。
例如,在[《眼花繚亂的運算符》](https://github.com/qiwsir/ITArticles/blob/master/BasicPython/110.md)中,提到了布爾運算,其實,在變量的類型中,除了前面提到的整數型、字符串型,布爾型也是一種,那么布爾型的變量有什么特點呢?下面就探索一下:
~~~
>>> a
'http://qiwsir.github.io'
>>> bool(a) #布爾型,用bool()表示,就類似int(),str(),是一個內置函數
True
>>> b=""
>>> bool(b)
False
>>> bool(4>3)
True
>>> bool(4<3)
False
>>> m=bool(b)
>>> m
False
>>> type(m)
<type 'bool'>
>>>
~~~
從上面的實驗可以看出,如果對象是空,返回False,如果不是,則返回True;如果對象是False,返回False。上面探索,還可以擴展到其它情況。看官能不能通過探索,總結出bool()的特點呢?
- 第零部分 獨上高樓,望盡天涯路
- 嘮叨一些關于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