python語言基礎
阿新 • • 發佈:2018-04-28
python語言基礎python基礎語言
註釋
單行註釋:#
多行註釋:‘‘‘ ‘‘‘ 或 """ """
數字
整型(Int) - 通常被稱為是整型或整數,是正或負整數,不帶小數點。 長整型(long integers) - 無限大小的整數,整數最後是一個大寫或小寫的L。 bool(布爾型) true false 浮點型(floating point real values) - 浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102 = 250) 復數(complex numbers) - 復數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 復數的實部a和虛部b都是浮點型
int | long | float | complex |
---|---|---|---|
10 | 51924361L | 0.0 | 3.14j |
100 | -0x19323L | 15.20 | 45.j |
-786 | 0122L | -21.9 | 9.322e-36j |
-0490 | 535633629843L | -90 | -6545+0J |
-0x260 | -052318172735L | -32.54e100 | 3e+26J |
0x69 | -4721885298529L | 70.2-E12 | 4.53e-7j |
註意:
長整型也可以使用小寫"L",但是還是建議您使用大寫"L",避免與數字"1"混淆。Python使用"L"來顯示長整型 Python還支持復數,復數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示,復數的實部a和虛部b都是浮點型
字符串:
使用‘ 或"引號引用的字符的序列
使用‘‘‘ ‘‘‘ 或"""單雙引號,可以跨行,可以在其中自由的使用雙引號,多行註釋
在字符串前面加上r或者R前綴,表示該字符不能做特殊處理
如:
print ("ar/nbbb")
ar/nbbb
基礎語法
轉義序列:
轉義字符 | 描述 |
---|---|
\ \ | 反斜杠 |
\t | 橫向制表符 |
\ | 續行符 |
\r | 回車鍵 |
\n | 換行 |
\‘ | 單引號 |
\" | 雙引號 |
前綴r,把裏面所有的字符當普通字符對待
縮進
未使用C語言的花括號,而是采用縮進的方式表示層級關系
約定使用4個空格縮進
續行
在行尾使用/ 如果使用各種括號,認為括號內是一個整體,內部跨行不能用\
標識符:
1.一個名字,用來指代一個值
2.只能字母、下劃線和數字
3.只能以字母或下劃線開頭
4.不能是Python的關鍵字,例如def、class就不能作為標識符
5.Python是大小寫敏感的
約定:
不允許使用中文
不允許使用歧義單詞,例如class_
在Python中要隨便使用下劃線開頭的表示符
常量:
一旦賦值就不能改變值的標識符
Python中無法定義常量
字面常量:
一個單獨的量,例如12、"abc"、‘2341356514.03e-9‘
變量:
賦值後,可以改變值的標識符
Python語言類型
Python是動態語言、強類型語言
靜態編譯語言:
實現聲明變量類型,類型不能再改變
編譯時檢測
動態編譯語言:
不用事先聲明類型,隨時可以賦值為其他類型
編譯時不知道是什麽類型,很難推斷
強類型語言:
不同類型之間操作,必須先強制類型轉換為同一類型,如 print (‘a‘+1)
弱類型語言:
不同類型間可以操作,自動隱式轉換,JavaScript中console.log(1+‘a‘)
運算符:
Python算術運算
運算符 | 描述 | 實例 |
---|---|---|
+ | 加 - | a + b 輸出結果 30 |
- | 減 - | a - b 輸出結果 -10 |
* | 乘 | a * b 輸出結果 200 |
/ | 除 | b / a 輸出結果 2 |
% | 取模 | b % a 輸出結果 0 |
** | 冪 | a**b輸出結果8 |
// | 取整除 | 9//2 輸出結果4 |
Python比較運算符:
== != > < >= <=
返回一個bool值
1 < ‘1‘ 1 == ‘1‘
運算符 | 描述 | 實例 |
---|---|---|
== | 等於 - 比較對象是否相等 | (a == b) 返回 False |
!= | 不等於 - 比較兩個對象是否不相等 | (a != b) 返回 true |
<> | 不等於 - 比較兩個對象是否不相等 | (a <> b) 返回 true |
> | 大於 - 返回x是否大於y | (a > b) 返回 False |
< | 小於 - 返回x是否小於y | (a < b) 返回 true |
>= | 大於等於 - 返回x是否大於等於y | (a >= b) 返回 False |
<= | 小於等於 -返回x是否小於等於y | (a <= b) 返回 true |
python賦值運算符:
運算符 | 描述 | 實例 |
---|---|---|
= | 簡單的賦值運算符 | c = a + b將 a + b 的運算結果賦值為c |
+= | 加法賦值運算符 | c += a 等效於 c = c + a |
-= | 減法賦值運算符 | c -= a 等效於 c = c - a |
*= | 乘法賦值運算符 | c = a 等效於 c = c a |
/= | 除法賦值運算符 | c /= a 等效於 c = c / a |
%= | 取模賦值運算符 | c %= a 等效於 c = c % a |
**= | 冪賦值運算符 | c = a 等效於 c = c a |
//= | 取整除賦值運算符 | c //= a 等效於 c = c // a |
Python位運算符:
& | ~ ^ << >>
常用方式:乘除2的倍數,32 // 4相當於32 >> 2
12,0xc,0o14,0b1100
~12等於多少,為什麽
原碼、反碼、補碼
原碼:
原碼就是符號位加上真值的絕對值,即用第一位表示符號,其余位表示值,比如如果是8位二進制
1 原碼: 0000 0001
-1原碼:1000 0001
第一位是符號位,因為第一位是符號位,所以8位二進制數的取值範圍就是:
[1111 1111 , 0111 1111]
即
[-127 , 127]
反碼:
反碼的表示方法是:
正數的反碼是其本身
負數的反碼是在其原碼的基礎上,符號位不變,其余個位取反
即
1 原碼:0000 0001 反碼:0000 0001
-1 原碼:1000 0001 反碼:1111 1110
可見如果一個反碼表示的是負數,人腦無法直觀的看出來它的數值,通常要將其轉換成原碼再計算
補碼:
補碼的表示方式是:
正數的補碼是其本身
負數的補碼是在其自身的基礎上,符號位不變,其余各位取反,最後加1
[+1] = [00000001]原 = [00000001]反 = [00000001]補
[-1] = [10000001]原 = [11111110]反 = [11111111]補
邏輯運算符
運算符 | 邏輯表達式 | 描述 | 實例 |
---|---|---|---|
and | x and y | 布爾"與" - 如果 x 為 False,x and y 返回 False,否則它返回 y 的計算值。 | (a and b) 返回 20 |
or | x or y | 布爾"或" - 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值。 | (a or b) 返回 10。 |
not | not x | 布爾"非" - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True | not(a and b) 返回 False |
與或非and or not
短路運算符:
and如果第一個表達式為false,後面就沒有必要計算了,這個邏輯表達式一定是false
or如果第一個表達式true,後面沒必要計算了,這個邏輯表達式一定是
python成員運算符
運算符 | 描述 | 實例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否則返回 False | x 在 y 序列中 , 如果 x 在 y 序列中返回 True |
not in | 如果在指定的序列中沒有找到值返回 True,否則返回 False | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True |
python身份運算符
運算符 | 描述 | 實例 |
---|---|---|
is | is 是判斷兩個標識符是不是引用自一個對象 | x is y, 類似 id(x) == id(y) , 如果引用的是同一個對象則返回 True,否則返回 False |
is not | is not 是判斷兩個標識符是不是引用自不同對象 | x is not y , 類似 id(a) != id(b)。如果引用的不是同一個對象則返回結果 True,否則返回 False |
is 與 == 區別:
例子測試
In [1]: a = ‘h1‘
In [2]: b = ‘h1‘
In [3]: a is b
Out[3]: True
In [4]: a == b
Out[4]: True
a1 = ‘I am using long string for testing‘
a2 = ‘I am using long string for testing‘
a1 is a2
False
a1 == a2
True
In [9]: str1 = ‘string‘
In [10]: str2 = "".join([‘s‘,‘t‘,‘r‘,‘i‘,‘n‘,‘g‘])
In [12]: str1 is str2
Out[12]: False
In [13]: str1 == str2
Out[13]: True
總結
is表示是對象標識符,而==表示是相等,顯然兩者不是一個東西。實際上,造成上面案例不一致的根本原因在於
is的作用是用來檢查標識符是否一致,也就是比較兩個對象的內存是否擁有同一塊內存空間,它並不適合用來判斷
兩個字符串是否相等。x is y僅當x和y是同一個對象的時候返回True,x is b相當於id(x) == id(y),而
==才是用來檢驗兩個對象的值是否相等的,它實際上調用的是內部__eq__()方法,因此a == b相當於a.__eq__(b),
所以==操作符是可以被重載的,而is不能被重載。一般情況下,如果x is y為True的話x == y 的值也為True,反之亦然。
對於長短字符串id值不一樣,是有一個python中的string interning(字符串駐留)機制決定的:對於較小的字符串,為了提高
系統性能會保留其值得一個副本,當創建新的字符串的時候直接指向該副本即可。而長字符串不會駐留,
python內存中各自創建對象
來表示a1,a2,這兩個對象擁有相同內容但對象標識符卻不相同,所以==的值為True而is的值為False
運算符的優先級(從高到低)
算數運算符 > 位運算符 > 身份運算符 > 成員運算符 > 邏輯運算符
長表達式,多用括號,易懂,易讀
表達式:
由數字、符號、括號、變量等組合
算數表達式
邏輯表達式
賦值表達式
Python中,賦值即定義,如果一個變量已經定義,賦值相當於重新定義
python語言基礎