文章目錄
接上:Python學習(一)三、基本概念1、常量:
一個字面意義上的常量的例子是如同5、1.23、9.25e-3這樣的數,或者如同'This is a string'、"It's a string!"這樣的字串。它們被稱作字面意義上的,因為它們具備 字面 的意義——你按照它們的字面意義使用它們的值。數2總是代表它自己,而不會是別的什麼東西——它是一個常量,因為不能改變它的值。因此,所有這些都被稱為字面意義上的常量。
2、數:
在Python中有4種類型的數——整數、長整數、浮點數和複數。
2
是一個整數的例子。
- 長整數不過是大一些的整數。
3.23
和52.3E-4
是浮點數的例子。E標記表示10的冪。在這裡,52.3E-4
表示52.3 * 10
-4。
(-5+4j)
和(2.3-4.6j)
是複數的例子。
3、字串:
字串是字元的序列 。字串基本上就是一組單詞。
幾乎在每個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"。
注意:
- 字串是不可變的:即我們定義了一個字串以後我們將不能改變它的值,這跟C++等語言的字串是不同的。
- 按字面意義級連字號串:如果把兩個字串按字面意義相鄰放著,他們會被Python自動連接。例如,'What\'s' 'your name?'會被自動轉為"What's your name?"。
- 在Python中沒有專門的char資料類型。確實沒有需要有這個類型。
- 單引號和雙引號字串是完全相同的。
- 一定要用自然字串處理Regex,否則會需要使用很多的反斜線。例如,後向引用符可以寫成'\\1'或r'\1'。
格式化方法:
我們可以通過使用format()方法來格式化字串:
# Filename: str_format.py age = 26name = 'Swaroop' print('{0} is {1} years old'.format(name, age))print('Why is {0} playing with that python?'.format(name))
輸出:
C:\Users\Administrator>python D:\python\str_format.py
Swaroop is 26 years old
Why is Swaroop playing with that python?
工作原理:
- 我們可以通過在字串後面使用format()方法來將相應的格式和參數整合到字串中。
- 例子中{0}對應的是format()的第一個變數name,{1}對應的是其第二個變數age。
- 注意,我們也可以使用name + ' is ' + str(age) + ' years old' 來達到同樣的效果,不過更麻煩,而且容易出錯, 這裡format()方法會自動代替這裡的強制轉換,同時,因為變數和字串本身分離,方便了更改。
format()方法還有更多的用法:
>>> '{0:.3}'.format(1/3) # 為1/3保留3為小數 '0.333'
>>> '{0:_^11}'.format('hello') #輸出hello,佔11位,兩邊用'_'填充,優先填充右邊,如果填充數小於字元長度,按原字元輸出 '___hello___'
>>> '{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python') # 按變數名匹配 'Swaroop wrote A Byte of Python'