1. 程式人生 > >《簡明Python教程》Swaroop, C. H. 著 第4章 基本概念

《簡明Python教程》Swaroop, C. H. 著 第4章 基本概念

用戶 後者 style 指示 單獨 轉義 大小寫 single 面向

僅僅打印“Hello World”就足夠了嗎?你應該想要做更多的事——你想要得到一些輸入,然後做操作,
再從中得到一些輸出。在Python中,我們可以使用常量和變量來完成這些工作。
字面意義上的常量
一個字面意義上的常量的例子是如同5、 1.23 、 9.25e-3這樣的數,或者如同‘This is a
string‘ 、 "It‘s a string!" 這樣的字符串。它們被稱作字面意義上的,因為它們具備 字面 的意
義——你按照它們的字面意義使用它們的值。數2總是代表它自己,而不會是別的什麽東西——它是一個
常量,因為不能改變它的值。因此,所有這些都被稱為字面意義上的常量。


在Python中有4種類型的數——整數、長整數、浮點數和復數。
2是一個整數的例子。
長整數不過是大一些的整數。
3.23 和52.3E-4是浮點數的例子。E標記表示10的冪。在這裏, 52.3E-4表示52.3 * 10 -4。
(-5+4j) 和(2.3-4.6j) 是復數的例子。


字符串
字符串是 字符的序列 。字符串基本上就是一組單詞。
我幾乎可以保證你在每個Python程序中都要用到字符串,所以請特別留心下面這部分的內容。下面告訴你
如何在Python中使用字符串。
使用單引號(‘)
你可以用單引號指示字符串,就如同‘Quote me on this‘ 這樣。所有的空白,即空格和制表符
都照原樣保留。
使用雙引號(")
在雙引號中的字符串與單引號中的字符串的使用完全相同,例如"What‘s your name?" 。
使用三引號(‘‘‘或""")
利用三引號,你可以指示一個多行的字符串。你可以在三引號中自由的使用單引號和雙引號。例如:
‘‘‘This is a multi-line string. This is the first
line.
This is the second line.
"What‘s your name?," I asked.
He said "Bond, James Bond."
‘‘‘
轉義符


假設你想要在一個字符串中包含一個單引號(‘),那麽你該怎麽指示這個字符串?例如,這個字符串
是What‘s your name?。你肯定不會用‘What‘s your name?‘ 來指示它,因為Python會
弄不明白這個字符串從何處開始,何處結束。所以,你需要指明單引號而不是字符串的結尾。可以通
過 轉義符 來完成這個任務。你用\‘ 來指示單引號——註意這個反斜杠。現在你可以把字符串表示
為‘What\‘s your name?‘ 。
另一個表示這個特別的字符串的方法是"What‘s your name?" ,即用雙引號。類似地,要在雙
引號字符串中使用雙引號本身的時候,也可以借助於轉義符。另外,你可以用轉義符\\ 來指示反斜杠
本身。
值得註意的一件事是,在一個字符串中,行末的單獨一個反斜杠表示字符串在下一行繼續,而不是開
始一個新的行。例如:
"This is the first sentence.\
This is the second sentence."
等價於"This is the first sentence. This is the second sentence."
自然字符串

如果你想要指示某些不需要如轉義符那樣的特別處理的字符串,那麽你需要指定一個自然字符串。自
然字符串通過給字符串加上前綴r或R來指定。例如r"Newlines are indicated by
\n" 。
Unicode字符串
Unicode是書寫國際文本的標準方法。如果你想要用你的母語如北印度語或阿拉伯語寫文本,那麽你
需要有一個支持Unicode的編輯器。類似地,Python允許你處理Unicode文本——你只需要在字符
串前加上前綴u或U。例如, u"This is a Unicode string." 。
記住,在你處理文本文件的時候使用Unicode字符串,特別是當你知道這個文件含有用非英語的語言
寫的文本。
字符串是不可變的
這意味著一旦你創造了一個字符串,你就不能再改變它了。雖然這看起來像是一件壞事,但實際上它
不是。我們將會在後面的程序中看到為什麽我們說它不是一個缺點。
按字面意義級連字符串
如果你把兩個字符串按字面意義相鄰放著,他們會被Python自動級連。例如, ‘What\‘s‘
‘your name?‘ 會被自動轉為"What‘s your name?" 。
給C/C++程序員的註釋
在Python中沒有專門的char數據類型。確實沒有需要有這個類型,我相信你不會為此
而煩惱。
給Perl/PHP程序員的註釋
記住,單引號和雙引號字符串是完全相同的——它們沒有在任何方面有不同。
給正則表達式用戶的註釋
一定要用自然字符串處理正則表達式。否則會需要使用很多的反斜杠。例如,後向引用
符可以寫成‘\\1‘ 或r‘\1‘ 。


變量
僅僅使用字面意義上的常量很快就會引發煩惱——我們需要一種既可以儲存信息 又可以對它們進行操作的
方法。這是為什麽要引入 變量 。變量就是我們想要的東西——它們的值可以變化,即你可以使用變量存儲
任何東西。變量只是你的計算機中存儲信息的一部分內存。與字面意義上的常量不同,你需要一些能夠訪
問這些變量的方法,因此你給變量名字。

標識符的命名
變量是標識符的例子。 標識符 是用來標識 某樣東西 的名字。在命名標識符的時候,你要遵循這些規則:
標識符的第一個字符必須是字母表中的字母(大寫或小寫)或者一個下劃線(‘ _ ’)。
標識符名稱的其他部分可以由字母(大寫或小寫)、下劃線(‘ _ ’)或數字(0-9)組成。
標識符名稱是對大小寫敏感的。例如, myname和myName不是一個標識符。註意前者中的小寫n和
後者中的大寫N。
有效 標識符名稱的例子有i、 __my_name、 name_23和a1b2_c3。
無效 標識符名稱的例子有2things、 this is spaced out和my-name。

數據類型
變量可以處理不同類型的值,稱為數據類型。基本的類型是數和字符串,我們已經討論過它們了。在後面
的章節裏面,我們會研究怎麽用類創造我們自己的類型。

對象
記住,Python把在程序中用到的任何東西都稱為 對象 。這是從廣義上說的。因此我們不會說“某某 東西
”,我們說“某個 對象 ”。
給面向對象編程用戶的註釋
就每一個東西包括數、字符串甚至函數都是對象這一點來說,Python是極其完全地面向
對象的。
我們將看一下如何使用變量和字面意義上的常量。保存下面這個例子,然後運行程序。


如何編寫Python程序
下面是保存和運行Python程序的標準流程。
1. 打開你最喜歡的編輯器。
2. 輸入例子中的程序代碼。
3. 用註釋中給出的文件名把它保存為一個文件。我按照慣例把所有的Python程序都以
擴展名.py保存。
4. 運行解釋器命令python program.py或者使用IDLE運行程序。你也可以使用先前介
紹的可執行的方法。
例4.1 使用變量和字面意義上的常量
# Filename : var.py
i = 5
print i
i = i + 1
print i
s = ‘‘‘This is a multi-line string.
This is the second line.‘‘‘
print s
(源文件: code/var.py)
輸出
$ python var.py
56
This is a multi-line string.
This is the second line.


它如何工作
下面來說明一下這個程序如何工作。首先我們使用賦值運算符( =)把一個字面意義上的常數5賦給變
量i。這一行稱為一個語句。語句聲明需要做某件事情,在這個地方我們把變量名i與值5連接在一起。接
下來,我們用print語句打印i的值,就是把變量的值打印在屏幕上。
然後我們對i中存儲的值加1,再把它存回i。我們打印它時,得到期望的值6。
類似地,我們把一個字面意義上的字符串賦給變量s然後打印它。
給C/C++程序員的註釋
使用變量時只需要給它們賦一個值。不需要聲明或定義數據類型。

邏輯行與物理行
物理行是你在編寫程序時所 看見 的。邏輯行是Python 看見 的單個語句。Python假定每個 物理行 對應一
個 邏輯行 。
邏輯行的例子如print ‘Hello World‘ 這樣的語句——如果它本身就是一行(就像你在編輯器中看
到的那樣),那麽它也是一個物理行。
默認地,Python希望每行都只使用一個語句,這樣使得代碼更加易讀。
如果你想要在一個物理行中使用多於一個邏輯行,那麽你需要使用分號(;)來特別地標明這種用法。分號
表示一個邏輯行/語句的結束。例如:
i = 5
print i
與下面這個相同:
i = 5;
print i;
同樣也可以寫成:
i = 5; print i;
甚至可以寫成:
i = 5; print i
然而,我強烈建議你堅持在每個物理行只寫一句邏輯行。僅僅當邏輯行太長的時候,在多於一個物理行寫
一個邏輯行。這些都是為了盡可能避免使用分號,從而讓代碼更加易讀。事實上,我 從來沒有 在Python
程序中使用過或看到過分號。
下面是一個在多個物理行中寫一個邏輯行的例子。它被稱為明確的行連接。
s = ‘This is a string. \
This continues the string.‘
print s
它的輸出:
This is a string. This continues the string.
類似地,
print \
i
與如下寫法效果相同:
print i
有時候,有一種暗示的假設,可以使你不需要使用反斜杠。這種情況出現在邏輯行中使用了圓括號、方括
號或波形括號的時候。這被稱為暗示的行連接。你會在後面介紹如何使用列表的章節中看到這種用法。

縮進
空白在Python中是重要的。事實上行首的空白是重要的。它稱為縮進。在邏輯行首的空白(空格和制表
符)用來決定邏輯行的縮進層次,從而用來決定語句的分組。
這意味著同一層次的語句必須有相同的縮進。每一組這樣的語句稱為一個塊。我們將在後面的章節中看到
有關塊的用處的例子。
你需要記住的一樣東西是錯誤的縮進會引發錯誤。例如:
i = 5
print ‘Value is‘ , i # Error! Notice a single space at
the start of the line
print ‘I repeat, the value is‘ , i
當你運行這個程序的時候,你會得到下面的錯誤:
File "whitespace.py", line 4
print ‘Value is‘, i # Error! Notice a single space
at the start of the line
^
SyntaxError: invalid syntax
註意,在第二行的行首有一個空格。Python指示的這個錯誤告訴我們程序的語法是無效的,即程序沒有正
確地編寫。它告訴你, 你不能隨意地開始新的語句塊 (當然除了你一直在使用的主塊)。何時你能夠使用
新塊,將會在後面的章節,如控制流中詳細介紹。
如何縮進
不要混合使用制表符和空格來縮進,因為這在跨越不同的平臺的時候,無法正常工作。
我 強烈建議 你在每個縮進層次使用 單個制表符 或 兩個或四個空格 。
選擇這三種縮進風格之一。更加重要的是,選擇一種風格,然後一貫地使用它,即 只 使
用這一種風格。

概括
現在我們已經學習了很多詳細的內容,我們可以開始學習更加令你感興趣的東西,比如控制流語句。在繼
續學習之前,請確信你對本章的內容清楚明了。

《簡明Python教程》Swaroop, C. H. 著 第4章 基本概念