本節教程將講解 Python 的語句、表達式以及它們之間的區別。python
以後,還將說明 Python 編程中使用多行語句和縮進。程序員
Python 中的語句是 Python 解釋器能夠讀取和執行的邏輯指令。它能夠是表達式或賦值語句。express
指定敘述/賦值語句是 Python 的基礎,它定義了表達式建立對象和保留對象的方式。編程
表達式是一種持有 Python 類型的語句,其中包括數字、字符串、對象和運算符的邏輯序列。由於值自己也是一個表達式,因此變量也屬於。編程語言
使用表達式,咱們能夠執行加、減和串聯操做等,也能夠調用具備返回結果的函數。ide
例如:函數
# 算數表達式
>>> ((10 + 2) * 100 / 5 - 200)
40.0
複製代碼
# 表達式中調用函數
>>> pow(2, 10)
1024
複製代碼
# 表達式中調用 eval 函數
>>> eval( "2.5+2.5" )
5.0
複製代碼
在簡單的賦值操做中,咱們須要建立新變量、賦值和更改值。例如將一個表達式和一個變量名做爲標籤,而後保留該表達式的值。測試
# 語法
variable = expression
# LHS <=> RHS
複製代碼
如今咱們來看看這個賦值操做中發生了什麼。編碼
1、右側(Right-Hand Side)是一個有值的基礎表達式。spa
能夠把它當作一個簡單的賦值操做:
>>> test = "Learn Python"
複製代碼
Python 將在內存中建立一個字符串"Learn Python",併爲其賦值給名稱"test"。咱們可使用 id() 內置函數來確認內存地址:
>>> test = "Learn Python"
>>> id(test)
4480231600
複製代碼
該數字就是數據存儲到內存中的地址。因此咱們就得出了一些有趣的結論。
一、當建立一個具備一樣值的字符串時,Python 會建立一個新對象並將其分配到內存中的另外一個位置。注意:該規則適合絕大多數狀況。
>>> test1 = "Learn Python"
>>> id(test1)
4480232048
>>> test2 = "Learn Python"
>>> id(test2)
4480232176
複製代碼
二、可是,在如下兩種狀況下,Python 是會分配到相同的內存地址:
這種作法稱爲字符串駐留(String Interning),Python 這樣作是爲了節省內存空間。
因此下面的例子就好理解了:
>>> s1 = 'learnpython'
>>> id(s1)
4480231152
>>> s2 = 'learnpython'
>>> id(s2)
4480231152
>>> s3 = 'learn python'
>>> id(s3)
4480232304
>>> s4 = 'learn python'
>>> id(s4)
4480232432
>>> s5 = -5
>>> id(s5)
4476639696
>>> s6 = -5
>>> id(s6)
4476639696
>>> s7 = -6
>>> id(s7)
4480009680
>>> s8 = -6
>>> id(s8)
4480009616
複製代碼
2、右側(Right-Hand Side)是當前的變量。
須要知道的是,右側的表達式是當前的變量。
>>> another_test = test
複製代碼
上面的操做在內存中不會分配新的內存空間。兩個變量都指向相同的內存地址。它就像是建立了一個別名去指向存在的對象。咱們能夠用 id() 函數來看下:
>>> test = "Learn Python"
>>> id(test)
4480232752
>>> another_test = test
>>> id(another_test)
4480232752
複製代碼
3、右側(Right-Hand Side)是可操做的。
要肯定一條語句的類型是什麼取決於操做的結果。咱們來看看下面這種例子:
>>> test = 2 * 5 / 10
>>> print(test)
1.0
>>> type(test)
<class 'float'>
複製代碼
上面這種賦值操做將建立一個 "float" 類型的變量。
>>> test = 2 * 5
>>> print(test)
10
>>> type(test)
<class 'int'>
複製代碼
這種將建立一個 "int" 類型的變量。
能夠在賦值操做中組合運算符以造成重複的賦值語句。
例如像這樣:
x += y
複製代碼
上面這種操做就等於這樣的簡寫:
x = x + y
複製代碼
下面咱們提供一個更清晰的例子,其中咱們將新元素添加到元組中:
>>> my_tuple = (10, 20, 30)
>>> my_tuple += (40, 50,)
>>> print(my_tuple)
(10, 20, 30, 40, 50)
複製代碼
下面咱們添加一個元音列表,例子也是添加新元素:
>>> list_vowels = ['a', 'e', 'i']
>>> list_vowels += ['o', 'u',]
>>> print(list_vowels)
['a', 'e', 'i', 'o', 'u']
複製代碼
一般每一個 Python 語句都以換行符結尾。可是,咱們可使用換行符(\)將其擴展成多行語句。
Python 提供了兩種方式擴展多行語句。
使用換行符(\)拆分紅多行。
例如:
# 使用多行語句初始化一個列表
>>> my_list = [1, \
... 2, 3\
... ,4,5 \
... ]
>>> print(my_list)
[1, 2, 3, 4, 5]
複製代碼
# 使用多行語句執行一個表達式
>>> eval ( \
... " 2.5 \ ... + \ ... 3.5")
6.0
複製代碼
隱式寫法是使用括號 (),方括號 [],大括號 {} 的任何一個拆分語句時,在開頭和結尾處將結構括起來。
>>> result = (10 + 100
... * 5 - 5
... / 100 + 10
... )
>>> print(result)
519.95
複製代碼
>>> subjects = [
... 'Maths',
... 'English',
... 'Science',
... ]
>>> print(subjects)
['Maths', 'English', 'Science']
>>> type(subjects)
<class 'list'>
複製代碼
不少高級的編程語言例如 C、C++、C# 都使用大括號 { } 來標記代碼塊。可是 Python 是經過縮進來完成。
表明函數或循環體的代碼以縮進開始,一直到一條未縮進的行結束。
Python 的代碼風格標準(PEP 8)規定 4 個空格表示縮進。然而,Google 的程序員表示用 2 個空格更好些。固然,任何人均可以按照本身的風格編碼,可是我建議你們都遵循 PEP 8 的代碼規範。
大多數編程語言都提供縮進以展現更好的代碼格式,可是都不強制縮進。
然而,在 Python 中代碼被要求必須遵循縮進規則。一般,在代碼塊中每行縮進 4 個空格。
由於,在建立複合語句時縮進變得很是重要:
def demo_routine(num):
print('I am a demo function')
if num % 2 == 0:
return True
else:
return False
num = int(input('Enter a number:'))
if demo_routine(num) is True:
print(num, 'is an even number')
else:
print(num, 'is an odd number')
複製代碼
如今咱們來看一個縮進致使的錯誤:
>>> 6*5-10
File "<stdin>", line 1
6*5-10
^
IndentationError: unexpected indent
複製代碼
若是想在編碼中讓代碼更加乾淨整潔,那麼瞭解 Python 的語句、表達式和縮進是頗有必要的。
本節全部例子都是在 Python 控制檯的交互模式下進行,由於控制檯有好的記憶功能,因此能加快測試效率。