print函數相信讀者必定對它不陌生,由於在前面的章節,幾乎每一個例子都使用了print函數,這個函數的功能就是在控制檯輸出文本。不過print在輸出文本時還能夠進行一些設置,以及輸出多參數字符串。編程
若是爲print函數傳入多個參數值,那麼print函數會將全部的參數值首尾相接輸出。編程語言
# 輸出結果:a b c d e print("a","b","c","d","e");
咱們能夠看到,上面的這行代碼輸出了a到e,共5個字母。在Python控制檯中輸出了「a b c d e」。很明顯是將這5個字符首尾相接輸出了。不過這些字母之間用空格分隔,這是print函數默認的分隔符,用於分隔輸出的多個參數值,這個默認設置是很是有用的,例如,執行下面的代碼,會在等號(=)後面加一個空格。函數
print("name =", "Bill") print("age =", 30)
輸出結果以下:
name = Bill
age = 30學習
其中等號(=)前面的空格是第1個參數值包含的。ui
print函數會爲除了第1個參數值之外的其它參數值前面添加一個空格,這樣作,在須要用空格分隔的場景下,就不須要在每個參數值前面添加空格了。this
不過這種默認設置有利有弊,在不須要用空格分隔時,print函數仍然會添加空格。例如,要輸出字符串「Apple,Orange,Banana」。其中Apple、Orange和Banana之間用逗號(,)分隔,逗號(,)與英文單詞之間沒有空格。若是按前面的作法,會有以下的代碼輸出這行字符串。rest
print("Apple",",", "Orange",",","Banana")
輸出的結果以下:
Apple , Orange , Bananacode
print("Apple",",", "Orange",",","Banana")
很明顯,逗號(,)先後都有空格。固然,能夠將逗號(,)與前面的英文單詞合併,但逗號(,)與後面的英文單詞之間仍然會有空格。對象
print("Apple",",", "Orange",",","Banana")
解決這個問題的方法不少,例如,能夠用傳統的字符串相加的方式輸出字符串「Apple,Orange,Banana」。blog
print("Apple" + "," + "Orange" + "," + "Banana")
如今咱們要用print函數特有的方法解決這個問題,就是修改默認的多參數值分隔符。在print函數最後添加「sep=","」,就能夠將分隔符從空格改爲逗號(,)。如今能夠直接使用下面的代碼輸出字符串「Apple,Orange,Banana」。
print("Apple", "Orange","Banana", sep=",")
輸出結果。
Apple,Orange,Banana
print函數輸出字符串時,默認會在字符串結尾添加換行符(\n),這樣每次調用print函數輸出字符串,都會另起一行。不過有時咱們但願調用屢次print函數都在同一行輸出,這時咱們能夠在print函數最後加上「end=" "」,讓最後一個輸出字符串結尾符變成空格,而不是原來的「\n」,固然,也能夠將結尾符設成長度爲0的字符串,這樣屢次使用print函數輸出的結果就會首尾相接了,中間沒有任何分隔符。
print("a",end=""); print("b",end=""); print("c");
輸出結果:abc
下面的例子演示了print函數輸出多參數值,修改默認多參數值分隔符,以及修改輸出字符串結尾字符的方法。
# 輸出用空格分隔的多參數值 print("name =", "Bill") # 輸出用空格分隔的多參數值 print("age =", 30) # 使用加號(+)鏈接字符串 print("Apple" + "," + "Orange" + "," + "Banana") # 修改多參數值分隔符爲逗號(,),而後輸出多參數值 print("Apple", "Orange","Banana", sep=",") # 修改多參數值分隔符爲「&」,而後輸出多參數值 print("Can","you","tell","me", "how", "to", "get", "to","the","nearest", "tube", "station", sep="&") # 修改輸出字符串結尾符爲空格,這樣下一次調用print函數,就會中同一行輸出內容了 # 運行結果:Hello world print("Hello", end=" ") print("world") # 修改輸出字符串結尾符爲長度爲0的字符串,這樣下一次調用print函數,輸出的內容不只會在同一行, # 並且會首尾相接,運行結果:abc print("a",end=""); print("b",end=""); print("c");
程序運行結果以下圖所示。
在不少讀者看來,賦值操做是再簡單不過了,咱們在前面的章節也屢次使用了賦值操做。不過Python語言中的賦值操做要有趣的多。例如,能夠同時將多個值賦給多個變量。
>>> x,y,z = 1,2,3 >>> print(x,y,z) 1 2 3
在上面的代碼中,將1,2,3分別賦給了x,y,z三個變量,並輸出這3個變量的值。使用Python語言中的這個特性能夠很容易實現兩個變量中值的交換。
>>> x,y = 20,30 >>> x,y = y,x >>> print(x,y) 30 20
這種同時將多個值賦給多個變量的操做,等號(=)右側的值與左側的變量個數必須相等,不然會拋出異常。
>>> x,y,z = 1,2 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: not enough values to unpack (expected 3, got 2) >>> x,y = 1,2,3 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: too many values to unpack (expected 2)
Python語言的這種特性稱爲序列解包(Sequence Unpacking),其實任何一個可迭代(Iterable)的對象都支持這一特性,關於迭代對象(列表、集合等)的詳細信息會在後面的章節介紹。
Python語言還支持鏈式賦值(Chained Assignments)和增量賦值(Augmented Assignments),鏈式賦值是指將同一個值連續賦給多個變量。
x = y = 20
增量賦值是指將變量自身增長或減少(負增量)指定值的表達式的簡化形式。例如,x = x + 2,若是用增量賦值表達式,能夠寫成x += 2,也就是將等號(=)右側的x省略,並將加號(+)放到等號左側。
其實前面介紹的二元運算符都支持增量賦值,例如,x = x * 20能夠寫成x *= 20,x = x % 3能夠寫成x %= 3。
下面的例子演示了序列解包、鏈式賦值和增量賦值的使用方法。
x,y,z = 1,2,3 # 使用序列解包方式進行賦值 print(x,y,z) x,y = y,x # 利用序列解包交換x和y的值 print(x,y) # x,y,z = 1,2 # 拋出異常 # x,y = 1,2,3 # 拋出異常 x = y = 20 # 使用鏈式賦值設置x和y print(x,y) x *= 2 # 增量賦值 x %= 3 # 增量賦值 print(x)
程序運行結果以下圖所示。
代碼塊並不是一種語句,而是在學習條件和循環語句以前必需要掌握的知識。
代碼塊是在條件爲真(true)時執行的一組語句,在代碼前放置空格來縮進語句便可建立代碼塊。
注意:使用tab字符也能夠縮進語句造成代碼塊。Python將一個tab字符解釋爲到下一個tab字符位置的移動,而一個tab字符爲8個空格,不過Python標準推薦使用空格縮進的方式建立代碼塊,建議使用4個空格縮進的方式建立代碼塊。
代碼塊的每行語句應該縮進一樣的量。下面的僞代碼(並不是真正的Python代碼)展現瞭如何用縮進的方式建立代碼塊。
This is a code line This is another code line: This is a block continuing the same block the last line of this block We escaped the inner block
不少編程語言使用特殊單詞或字符來表示一個代碼塊的開始,用另外的單詞或字符表示代碼塊的結束,例如,Pascal語言使用begin表示代碼塊的開始,使用end表示代碼塊的結束,而C風格的編程語言(如Java、C#、C++等)使用一對大括號表示代碼塊的開始和結束。Python語言和這些語言都不同,Python語言使用冒號(:)表示代碼塊的開始,代碼塊中的每一條語句都是縮進的(縮進量相同)。當回退到與快的開始語句一樣的縮進量時,就表示當前塊已經結束。不少集成開發環境(IDE)會幫助用戶輕鬆把握縮進,所以讀者沒必要擔憂縮進量不對致使Python程序沒法編譯經過。
咱們如今已經瞭解瞭如何使用Python語言中的縮進塊,在下面幾節就詳細介紹各類縮進塊的應用。