最近開始學python,這是一個很強大和便捷的編程語言,日後進行科學計算和科研的時候必然成爲主要的編程語言。
本來買了一本python基礎教程(第2版),然而教學順序不太喜歡,因爲一開始並沒有講清楚語法,不能學了立馬用到實驗中。並且,這本書針對的是沒有編程基礎的人,講的比較淺。
我有一點C的編程基礎,根據知乎上python的推薦教程url,決定從中文的簡明python教程url入手。
在這裏把python中特有的,以及和C不同的地方記下來。
1.數據類型
在python中,有4種數據類型——整數(int)、長整數(long)、浮點數(float)和複數(complex)。
- 2是一個整數的例子。
- 長整數不過是大一些的整數。長整型通常在數字後面加L表示,如1000000L。
- 3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裏,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是複數的例子。
這裏居然有複數,果然比C要方便計算,在C中通常需要自己定義複數類型。
強制類型轉換
上面的4中數據類型可以互相轉換,還可以轉換爲字符串類型(str)如:
>>> a=12343434
>>> long(a)
12343434L
>>> str(a)
'12343434'
>>> float(a)
12343434.0
complex(a)
(12343434+0j)
2.字符串
可以用單引號和雙引號來表示中間爲字符串,兩者並沒有什麼差別。當字符串裏有引號或者多行時,可以用三引號括起來(”’或者”“”)表示。
在C++中,使用單引號表示char,用雙引號表示String。
轉義字符
在字符中,若要表示斜槓\,需要使用\,其他特殊符號也是,例如用\’ 表示引號(若沒有使用三引號)。程序中可以使用 \ 表示兩行是連在一起的,例如
s = 'This is a string. \
This continues the string.'
print s
輸出:
This is a string. This continues the string.
自然字符串
如果你想要指示某些不需要如轉義符那樣的特別處理的字符串,那麼你需要指定一個自然字符串。自然字符串通過給字符串加上前綴r或R來指定。例如r”Newlines are indicated by \n”。
Unicode字符串
Unicode是書寫國際文本的標準方法。如果你想要用中文或者其他非英文文本,那麼你需要有一個支持Unicode的編輯器。類似地,Python允許你處理Unicode文本——你只需要在字符串前加上前綴u或U。例如,u”This is a Unicode string.”。
記住,在你處理文本文件的時候使用Unicode字符串,特別是當你知道這個文件含有用非英語的語言寫的文本。
字符串是不可變的
這意味着一旦你創造了一個字符串,你就不能再改變它了。雖然這看起來像是一件壞事,但實際上它不是。若要對一個字符進行修改,其實也可以用原來的名字進行賦值,例如:
>>> s='abc'
>>> s=s[:2]
>>> print s
ab
3.標識符(變量的命名)
標識符的第一個字符必須是字母表中的字母(大寫或小寫)或者一個下劃線(‘ _ ’)。
標識符名稱的其他部分可以由字母(大寫或小寫)、下劃線(‘ _ ’)或數字(0-9)組成。
無效 標識符名稱的例子有2things、this is spaced out和my-name。
使用變量時只需要給它們賦一個值。不需要聲明或定義數據類型。
4.縮進
空白在Python中是重要的。事實上行首的空白是重要的。它稱爲縮進。在邏輯行首的空白(空格和製表符)用來決定邏輯行的縮進層次,從而用來決定語句的分組。
這意味着同一層次的語句必須有相同的縮進。每一組這樣的語句稱爲一個塊。
不要混用空格和tab,要是用tab就全部用tab,若用4個空格或2個空格則一直用空格。一個tab和4個空格是不一樣的,即使看起來位置一樣!
5.運算符
我把值得注意的,和C不一樣的列出來:
運算符 | 名稱 | 說明 | 例子 |
---|---|---|---|
** | 冪 | 返回x的y次冪 | 3 ** 4得到81(即3 * 3 * 3 * 3) |
// | 取整除 | 返回商的整數部分 | 4 // 3.0得到1.0 |
^ | 按位異或 | 數的按位異或 | 5 ^ 3得到6 |
~ | 按位翻轉 | x的按位翻轉是-(x+1) | ~5得到6。 |
<= | 小於等於 | 返回x是否小於等於y | x = 3; y = 6; x <= y返回True。 |
>= | 大於等於 | 返回x是否大於等於y | x = 4; y = 3; x >= y返回True。 |
not | 布爾“非” | 如果x爲True,返回False。如果x爲False,它返回True。 | x = True; not y返回False。 |
and | 布爾“與” | 如果x爲False,x and y返回False,否則它返回y的計算值。 | x = False; y = True; x and y,由於x是False,返回False。在這裏,Python不會計算y,因爲它知道這個表達式的值肯定是False(因爲x是False)。這個現象稱爲短路計算。 |
or | 布爾“或” | 如果x是True,它返回True,否則它返回y的計算值。 | x = True; y = False; x or y返回True。短路計算在這裏也適用。 |
6.運算優先級
下面這個表給出Python的運算符優先級,從最低的優先級(最鬆散地結合)到最高的優先級(最緊密地結合)。這意味着在一個表達式中,Python會首先計算表中較下面的運算符,然後在計算列在表上部的運算符
運算符 | 描述 |
---|---|
lambda | Lambda表達式 |
or | 布爾“或” |
and | 布爾“與” |
not x | 布爾“非” |
in,not in | 成員測試 |
is,is not | 同一性測試 |
<,<=,>,>=,!=,== | 比較 |
| | 按位或 |
^ | 按位異或 |
& | 按位與 |
<<,>> | 移位 |
+,- | 加法與減法 |
*,/,% | 乘法、除法與取餘 |
+x,-x | 正負號 |
~x | 按位翻轉 |
** | 指數 |
x.attribute | 屬性參考 |
x[index] | 下標 |
x[index:index] | 尋址段 |
f(arguments…) | 函數調用 |
(experession,…) | 綁定或元組顯示 |
[expression,…] | 列表顯示 |
{key:datum,…} | 字典顯示 |
‘expression,…’ | 字符串轉換 |
運算符通常由左向右結合,即具有相同優先級的運算符按照從左向右的順序計算。如果我們想要改變它們的計算順序,得使用圓括號。