怎樣才能開始一個交互式解釋器的會話?在Windows下可以通過點擊開始按鈕,選擇“程序”,點擊“Python”,然后選擇“Python(command line)”菜單選項來開始一個交互會話。 你應該在哪里輸入系統(tǒng)命令行來啟動一個腳本文件?在輸入系統(tǒng)命令行的地方,也就是你所在的平臺提供給作為系統(tǒng)終端的地方 Windows下的系統(tǒng)提示符,在Unix、Linux或mac OS x的xterm或者終端窗口。 指出運行保存在一個腳本文件中的代碼的四種或者更多的方法。一個腳本(實際 上是模塊)文件中的代碼可以通過系統(tǒng)命令行、文件鼠標點擊、導入和重載,exec內置函數(shù)以及像IDLE的Run→Run Module菜單選項這樣的IDEGUI選取來運行。 指出在Windows下點擊文件圖標運行腳本的兩個缺點打印后退出的腳本會導致輸出文件馬上消失,在你能夠看到輸出之前,你的腳本產生的同樣顯示在輸出窗口的錯誤信息,會在查看其內容前關閉(這也是對大多數(shù)開發(fā)任務,系統(tǒng)命令和IDLE這類IDE之所以更好的原因。) 在IDLE中怎樣運行一個腳本?在默認的情況下,Python每個進程只會導入一個模塊一次,所以如果你改變了它的源代碼,并且希望在不停止或者重新啟動Python的情況下運行其最新的版本,你將必須重載它。在你重載一個模塊之前至少已經導入了一次。在系統(tǒng)命令行匯總運行代碼,或者通過圖標點擊,或者像使用IDLE這樣IDE,這不再是一個問題,因為這些啟動機制網管網每次都是運行源代碼的最新版本。 列舉兩個使用IDLE的潛在缺點。在你希望運行的文件所在的文件編輯窗口,懸著窗口的Run→Run Module菜單選項。這可以將這個窗口的源代碼作為頂層腳本文件運行,并在交互Pythonshell窗口顯示其輸出。 什么是命名空間,它和模塊文件有什么關聯(lián)命名空間就是變量(也就是變量名)的封裝。它在Python中以一個帶有屬性的對象形式出現(xiàn)。每個模塊文件自動成為一個命名空間;也就是說,一個對變量的封裝,這些變量對應了頂層文件的復制。命名空間可以避免在Python程序中的命名沖突——因為每個模塊文件都是獨立玩唄的命名空間,文件鼻血明確的導入其他的文件才能使用這些文件的變量名。 列舉4個Python核心數(shù)據(jù)類型的名稱數(shù)據(jù)、字符串、列表、字典、元組、文件和集合一般被認為是核心對象(數(shù)據(jù))類型。類型、None和布爾型有時也被定義在這樣的分類中。還有數(shù)字類型(整數(shù)、浮點數(shù)、復數(shù)、分數(shù)和十進制數(shù))和多種字符串類型。 為什么我們把他們稱作“核心”數(shù)據(jù)類型?它們被認作是“核心”類型是因為他們是Python語言資深的一部分,并且總是有效的,為了建立其他的對象,通常必須調用被導入模塊的函數(shù)。大多數(shù)核心類型都有特定的語法去生成其對象。 “不可變性”代表什么,哪三種核心數(shù)據(jù)被認為是具有不可變性的?一個具有不可變性的對象是一個在其創(chuàng)建以后不能夠被改變的對象。Python中的數(shù)據(jù)、字符串和元組都是屬于這個分類。盡管無法的改變一個不可變的對象,但是你總是可以通過運行一個表達式創(chuàng)建一個新的對象。 “序列”是什么依稀,哪三種核心數(shù)據(jù)被認為是這個分類中的?一個序列是一個對位置進行拍訊的對象的集合。字符串、列表和元組是Python中所有序列。他們共同擁有一般的序列操作,例如:索引、合并以及切片,但各自有自己的類型特定的方法調用。 “映射”是什么意思,那種Python的核心類型是映射?術語映射,表示將鍵與相互關聯(lián)映射的對象。Python的字典是其核心數(shù)據(jù)類型幾種唯一的映射類型。應該設沒有從左至右的位置順序,他們支持通過鍵獲取數(shù)據(jù),并包含了類型特定的放大調用。 什么是多態(tài),為什么我們要關心多態(tài)?多態(tài)以為著一個操作符(如+)的意義區(qū)卻于被操作的對象。這將變成使用好Python的關鍵思想之一,不要把代碼限制在特定的類型上,使代碼自動使用于多種類型。 思考下面三條聚聚。它們會改變A打印出的值嘛?1 A = "spam" 2 3 B = A 4 5 B = "shrubbery" 不會,A仍會作為“spam”進行打印。當B賦值為字符串"shrubbery"時,所發(fā)生的變量B被重新設置為所指向了新的字符串對象。A和B最初共享了同一個字符串對象“spam”,但是在Python中這個連個變量名從未鏈接在一起。因為,設置B為另一個不同的對象對A沒有影響。如果這里最后的語句變?yōu)锽 = B+"shrubbery",也會發(fā)生同樣的事情。另外,合并操作創(chuàng)建了一個新的對象作為其結果,并將這個值只賦值給了B。我們永遠都不會在遠處覆蓋一個字符串(數(shù)字或者元組),因為字符串是不可變的。 思考下面三條語句。它們會改變A的值嘛?A = ["spam"] B = A B[0] = "shrubbery" 會改變A的值,A現(xiàn)在打印為["shrubbery"],從技術上講,我們既沒有改變A也沒有改變B,我們改變的是這兩個變量共同引用的對象一部分,通過變量B在遠處覆蓋了這個對象的一部分內容。因為A像B一樣引用了同一個對象,這個改變也會對A產生影響。 思考下面三條語句。它們會改變A的值嘛?A = ["spam"] B = A[:] B[0] = "shrbbery" 不會,A仍然會打印為['spam']。由于切片會在被復制給B錢創(chuàng)建一個拷貝,這次對B在原處賦值就不會影響了。在第二個賦值語句后,就有了兩個擁有相同值的不同列表對象了(在Python中,我們說它們是==的,卻不是is的)。第三條復制語句會邊改指向B的列表對象,而不會改變指向A的列表對象。 |
|