官术网_书友最值得收藏!

1.2.1 IPython控制臺

為了讓我們的討論集中在Python,而不是各種平臺的細節上,我們假設你在閱讀本指南時使用的是Spyder。但這不是必需的!如果你希望從更簡單的界面開始,可以在Anaconda Navigator中打開Qt控制臺應用程序,并開始輸入命令。如果你喜歡筆記本界面,可以使用Jupyter Notebook(參見附錄C)。如果你喜歡在命令行中工作,可以從終端啟動IPython(見附錄B)。不過,在某些情況下,你需要一個IPython解釋器和一個文本編輯器。Spyder包含了這兩個功能,以及其他一些有用的功能,其界面也是MATLAB用戶所熟悉的。使用Python有許多種方法,你可以在學習本書時使用其中任何一種方法。如果你是Python新手,Spyder是一個不錯的選擇。

現在打開Spyder。啟動后,Spyder會打開一個窗口,其中包含多個窗格,見圖1.1。左邊是編輯器窗格,用于編輯程序文件(腳本)。右邊有兩個窗格。

圖1.1 Spyder界面。添加圓圈是為了強調(從上到下、從左到右)按鈕、首選項(扳手圖標)、變量管理器中的變量、將變量管理器置于其窗格前部的選項卡、按鈕、IPython命令提示符和IPython控制臺選項卡

右上角窗格可能包含幫助、變量管理器、繪圖和文件管理器選項卡。如果有必要,單擊變量管理器的選項卡,可將其置于最前面。右下角窗格應包括IPython控制臺的選項卡;如果需要,可以單擊它[6]。這里提供了命令行解釋器,你可以在輸入Python命令時以交互方式執行命令。


[6] 如果沒有出現IPython控制臺選項卡,可以從界面頂部的菜單中打開:“Consoles”>“New console”。

如果你的窗口布局變得雜亂無章,不要擔心。窗口布局很容易調整。Spyder的標準格式是一個窗口,分為剛才描述的3個窗格。每個窗格可以有多個選項卡。如果有不需要的窗口,可以單擊按鈕分別關閉它們。你還可以使用菜單“View”>“Panes”選擇要顯示的窗格,并停用不需要的窗格。點擊“View”>“Window layouts”>“Spyder Default Layout”,將恢復標準布局。

單擊IPython控制臺內部。現在,你輸入的內容將顯示在命令提示符后。默認情況下,命令提示符類似于:

In[1]:

嘗試輸入簡單的命令,如“2+2”,并在每行后按<Return>。Python在每次<Return>后立即響應,以嘗試執行你輸入的任何命令[7]


[7] 本書使用“命令”一詞來表示可由解釋器執行的任何Python語句。像a=1這樣的賦值,像plt.plot(x,y)這樣的函數調用,以及像%reset這樣的特殊指令都是命令。

單擊變量管理器選項卡。每次輸入命令并按<Return>后,此窗格的內容將反映Python狀態的任何變化:最初為空,然后顯示變量列表及其值的摘要[8]。當變量包含多個值(例如數組)時,雙擊列表中的該變量,可以打開包含該數組所有值的電子表格。你可以在此電子表格中復制數據并粘貼到其他應用程序中。


[8] 某些變量不會顯示。你可以通過變量管理器窗格右上角的菜單來控制哪些變量被排除在外。

在任何時候,你都可以通過退出并重新啟動Python,或者通過執行以下命令來重置Python的狀態:

%reset

由于此操作將刪除會話中創建的幾乎所有內容,是不可逆的,因此它需要你確認[9]。按<Y>,然后按<Return>繼續。(以%符號開頭的命令是魔法命令,即IPython解釋器中特有的命令。魔法命令可能不適用于原生Python解釋器和你編寫的腳本。要了解更多信息,請在IPython命令提示符下輸入%magic。)


[9] 如果IPython似乎沒有對%reset響應,請嘗試手動向上滾動IPython控制臺以查看確認詢問。

示例:使用%reset命令,然后在提示符下嘗試以下命令。如下所示準確輸入每一行,然后按<Return>,解釋你所看到的結果:

q
q == 2
q = 2
q
q == 2
q == 3

解答:對于前兩行,Python會報錯。最初,符號q沒有與任何對象關聯,它沒有值,因此涉及q的表達式是無法計算的。第3行改變了Python的狀態,進而會改變這種情況,因此最后3行不會產生錯誤。

示例:現在再次清除Python的狀態。在提示符下嘗試以下操作,并解釋你所看到的結果(參考1.1.4小節可能會有用):

a = 1
a
b = a**2 - a
b
a = 2
print(a)
print(b)
b = a**2 - a
a, b
print(a, b)

解答:前4行的結果應該很清楚——我們給變量ab賦值。在第5行中,我們更改了a的值,但因為Python只記住b,而記不住它與a的關系,所以b的值是不變的,直到我們在第8行顯式地更新b的值。

在命令提示符下輸入代碼時,你可能會遇到一種令人困惑的情況,Python似乎沒有響應,只顯示“...:”,而不是執行命令。

如果命令包含不成對的(、[或{,則Python將繼續讀取更多行,搜索相應的)、]或}。

現在請尋找不匹配的括號。如果找到,請輸入右括號并按<Return>。如果不知道如何匹配括號,或者有其他問題,可以使用<Shift-Return>強制執行,或者按<Esc>中止命令[10]。


[10] <Esc>會取消Spyder中的當前命令。在其他IDE或解釋器中,可能需要使用<Ctrl-C>進行中斷,使用<Alt-Return>進行強制執行。

上面示例說明了一個要點:賦值語句不會顯示賦值之后變量的值。要在IPython會話中查看賦值之后變量的值,可以使用print()命令或在單獨的一行中輸入變量名[11]。


[11] 在你編寫的腳本中,Python將計算表達式,但不會在屏幕上顯示任何內容;如果想要輸出結果,就必須給出一個顯式的print()命令。腳本將在3.3節中討論。

上面示例的最后兩行展示了如何一次查看多個對象的值。請注意,兩行的輸出并不完全相同。

你可以通過開始新行來結束命令,也可以用分號(;)結束命令然后在同一行上添加另一個命令。

你還可以使用單個=命令進行多個賦值。這是使用分號的替代方法。以下兩行都是將相同的值賦給各自的變量:

a = 1; b = 2; c = 3
x, y, z = 1, 2, 3

第二個命令的任何一側都可以用括號括起來,結果不會受到影響。

前面的段落展示了用Python節省空間和簡化輸入的方法。有時候這很方便,但最好不要過多地使用這種能力。相反,你應該嘗試使代碼的含義盡可能清晰。為了便于閱讀,值得在程序中花費一點額外的時間或者多輸入幾行代碼。

在某些情況下,你可能希望使用一個很長的命令,但一行又容納不下。在這種情況下,可以用反斜杠(\)結束一行。這時,Python將繼續讀取下一行作為同一命令的一部分。嘗試以下命令:

q = 1 + \
2
print(q)

一個命令甚至可以擴展到多行:

xv\
a\
l\
= 1 + \
2

這將創建變量xval并將其賦值為3。

若要編寫清晰的代碼,可以使用少量的反斜杠和分號。

主站蜘蛛池模板: 宜川县| 遂昌县| 乌拉特前旗| 临夏县| 天柱县| 冕宁县| 虞城县| 饶阳县| 荣昌县| 福清市| 三原县| 郑州市| 塔城市| 枣庄市| 台东市| 嘉荫县| 彩票| 长沙县| 三亚市| 兴宁市| 福泉市| 苗栗市| 沙洋县| 剑川县| 天镇县| 林口县| 明水县| 阜南县| 黄山市| 万安县| 阿拉善盟| 宜丰县| 乌兰县| 马龙县| 花莲县| 儋州市| 嘉鱼县| 嵊泗县| 嘉荫县| 砚山县| 舞钢市|