返回目錄html
通常簡單的如加減乘除之類的運算符就不寫了,這裏主要列些一些容易搞錯或忘記的運算符。運算符不單單隻有號,有一些英文單詞如 in, and 之類,也是運算符,並非語句。python
運算符 | 簡述 | 舉例或說明 | |
---|---|---|---|
數字操做 | |||
/ | 在Python3中,默認爲浮點數除法;在Python2中,若除數和被除數都是整數,則默認爲截斷除法。若要在Python2中也爲浮點數除法,須要使用: from __future__ import division | 2/3 # Python3 中結果爲:0.6666666666666666 函數 2/3 # Python2 中結果爲:0 ui |
|
// | 截斷除法(僅保留整數部分),又叫「地板除法」。 | 2//3 # 結果爲 0spa |
|
% | 取模(浮點數也能夠作取模運算)。 | 8 % 3 # 結果爲 2code 1.2 % 0.5 # 結果爲 0.2htm |
|
** | 乘方(次方)運算。 | 2**3 # 結果爲 8對象 |
|
-x | 一元減法。 | x=3; x=-y # 結果爲 x=-3blog |
|
+x | 一元加法(通常用不到)。 | x=+3 # 結果爲 x=3索引 |
|
位操做 | |||
& | 按位與。 | 0b111 & 0b011 # 結果爲 3 |
|
| | 按位或。 | 0b010 & 0b001 # 結果爲 3 |
|
^ | 按位異或。 | 0b001 & 0b011 # 結果爲 2 |
|
~ | 按位求反。 | ~1 # 結果爲 -2(這個涉及補碼知識) |
|
<< | 左移 | 1<<2 # 結果爲 4 |
|
>> | 右移 | 1>>2 # 結果爲 0 |
|
布爾運算 | |||
and | 邏輯與(短路求值) | 略 |
|
or | 邏輯或(短路求值) | 略 |
|
not | 邏輯非 | 略 |
|
從屬關係 | |||
in | 屬於成員 | x in seq |
|
not in | 不屬於成員 | x not in seq |
|
is | 是否引用了內存中的同一個對象 | x is y |
|
is not | 是否引用了內存中的不一樣對象 | x is not y |
|
其餘 | |||
. | 屬性運算符 | 略 |
|
() | 函數調用運算符 | f=some_fun # 假設some_fun爲某個已定義函數 f() # 即調用some_fun函數 |
下表中運算符優先級從高到低。
運算符 | 說明 |
---|---|
(...), [...], {...} | 建立元組、列表、字典 |
s[i], s[i:j] | 索引和切片 |
. | 屬性運算符 |
() | 函數調用運算符 |
+x, -x, ~x | 一元操做符(一元加法、一元減法、按位取反) |
** | 乘方(次方)運算 |
*, /, //, % | 乘法、除法、截斷除法、取模 |
+, - | 加法、減法 |
<<, >> | 移位 |
& | 按位與 |
^ | 按位異或 |
| | 按位或 |
<, <=, >, >=, ==, !=, is, is not, in, not in |
關係運算符、身份檢查、成員檢查 |
not | 邏輯非 |
and | 邏輯與 |
or | 邏輯或 |
lambda args: exrp | 匿名函數 |
前面的運算符僅能作一些最基礎的運算,若是須要進一步的標準數學運算函數,須要導入math模塊。 math模塊全部函數的返回值都是浮點數,全部三角函數都默認使用弧度。math模塊不支持複數運算,若要運算複數,須要導入cmath模塊。
字符串方法 | 簡述 | 舉例或說明 | |
---|---|---|---|
屬性 | |||
pi | 數學常數π | math.pi # 結果爲 3.141592653589793 |
|
e | 數學常數e | math.e # 結果爲 2.718281828459045 |
|
tau | Python3.6新增,數學常數2π | math.tau # 結果爲 6.283185307179586 |
|
inf | Python3.5新增,正無窮大 | 略 |
|
nan | Python3.5新增,浮點數的NaN,至關於float('nan') | 略 |
|
舍入運算 | |||
ceil(x) | 返回x的向上舍入值 | math.ceil(2.1) # 結果爲 3 math.ceil(-2.1) # 結果爲 -2 |
|
floor(x) | 返回x的向下舍入值 | math.floor(2.8) # 結果爲 2 math.floor(-2.8) # 結果爲 -3 |
|
trunc(x) | 將x截爲最接近於零的整數 | math.floor(2.8) # 結果爲 2 math.floor(-2.8) # 結果爲 -2 |
|
通常數學計算 | |||
fabs(x) | 返回x的絕對值,其效果同內置函數abs() | math.fabs(-2.8) # 結果爲 2.8 |
|
fsum(s) | 返回可迭代序列s中的和,其效果比內置函數sum()更精確 | math.fsum([1,1e100,-1e100]) # 結果爲 1.0 sum([1,1e100,-1e100]) # 結果爲 0.0(內置函數計算) |
|
fmod(x, y) | 返回x % y,浮點數亦可做取模運算 | math.fmod(8,3) # 結果爲 2.0 |
|
pow(x, y) | 乘方運算,返回x**y | math.pow(2,3) # 結果爲 8.0 |
|
sqrt(x) | 返回x的平方根 | math.sqrt(4) # 結果爲 2.0 |
|
hypot(x, y) | 返回座標點(x,y)到原點的幾何距離,即sqrt(x*x + y*y) | math.hypot(3,4) # 結果爲 5.0 |
|
factorial(x) | 返回x的階乘 | math.factorial(4) # 結果爲 24 |
|
copysign(x, y) | 返回與y具備相同符號的x | math.copysign(1,-3) # 結果爲 -1.0 |
|
gcd(x, y) | Python3.5新增,返回x與y的最大公約數(Greatest Common Divisor) | math.gcd(6,8) # 結果爲 2 |
|
exp(x) | 返回 ex值 | math.exp(1) # 結果爲 2.718281828459045 |
|
expm1(x) | Python3.2新增,返回exp(x)-1, | math.expm1(1) # 結果爲 1.718281828459045 |
|
ldexp(x, i) | 返回 x * 2i | math.ldexp(4, 10) # 結果爲 4096.0 |
|
log(x [,base]) | 返回指定base爲底的x的對數,base默認爲天然常數math.e | math.log(math.e) # 結果爲 1.0 math.log(100,10) # 結果爲 2.0 |
|
log10(x) | 返回以10爲底的x的對數 | math.log10(100) # 結果爲 2.0 |
|
log2(x) | Python3.3新增, | math.log2(8) # 結果爲 3.0 |
|
log1p(x) | 返回1+x的天然對數 | math.log1p(math.e-1) # 結果爲 1.0 |
|
erf(x) | Python3.2新增,返回x的偏差函數(統計學公式) | math.erf(1) # 結果爲 0.8427007929497149 |
|
erfc(x) | Python3.2新增,返回x的互補偏差函數(統計學公式) | math.erfc(1) # 結果爲 0.1572992070502851 |
|
gamma() | Python3.2新增,返回x的伽瑪函數(機率學公式) | 略 |
|
lgamma() | Python3.2新增,返回x的伽瑪函數的絕對值的天然對數(機率學公式) | 略 |
|
三角函數 | |||
sin(x) | 正弦函數 | math.sin(math.pi/2) # 結果爲 1.0 |
|
cos(x) | 餘弦函數 | math.cos(math.pi/4) # 結果爲 0.7071067811865476 |
|
tan(x) | 正切函數 | math.tan(math.pi/3) # 結果爲 1.7320508075688767 |
|
asin(x) | 反正弦函數 | math.asin(1.0) # 結果爲 1.5707963267948966 |
|
acos(x) | 反餘弦函數 | math.acos(1.0) # 結果爲 0.0 |
|
atan(x) | 反正切函數 | math.atan(inf) # 結果爲 1.5707963267948966 |
|
atan2(y, x) | 返回atan(y/x) | math.atan2(2,2) # 結果爲 0.7853981633974483 |
|
degrees(x) | 將x從弧度轉換爲角度 | math.degrees(math.pi/2) # 結果爲 90.0 |
|
radians(x) | 將x從角度轉換爲弧度 | math.radians(180) # 結果爲 3.141592653589793 |
|
雙曲函數 | |||
sinh(x) | 雙曲正弦函數 | 略 |
|
cosh(x) | 雙曲餘弦函數 | 略 |
|
tanh(x) | 雙曲正切函數 | 略 |
|
asinh(x) | 反雙曲正弦函數 | 略 |
|
acosh(x) | 反雙曲餘弦函數 | 略 |
|
atanh(x) | 反雙曲正切函數 | 略 |
|
其餘 | |||
modf(x) | 返回元組形式的x的小數和整數部分 | math.modf(3.14) # 結果爲 (0.14000000000000012, 3.0) |
|
frexp(x) | 返回元組形式的x的正浮點尾數和浮點指數 | math.frexp(100.0) # 結果爲 (0.78125, 7) |
|
remainder(x, y) | Python3.7新增,返回x相似浮點數結構的尾數,計算方式爲:x-n**y,其中n爲最佳接近x/y的整數。 | math.remainder(10,1) # 結果爲 0.0 |
|
isinf(x) | 若是x是正無窮大,則返回True | math.isinf(inf) # 結果爲 True |
|
isfinite() | Python3.2新增,若是x不是無窮大的數,則返回True | math.isfinite(123) # 結果爲 True |
|
isnan(x) | 若是x是浮點數的NaN(Not a Number),則返回True | math.isnan(float('nan')) # 結果爲 True |
|
isclose(a, b) | Python3.新增,若是a和b足夠接近,則返回True | math.isclose(0.1,0.1000000001) # 結果爲 True |
表達式與語句的根本區別在於:語句沒有值,而表達式有值。
● 賦值語句
因爲賦值語句是「語句」,故其沒有值,不能像C語言那樣使用諸如 if(a=3)之類的形式(C語言的賦值語句有值,值爲賦值內容),但Python的賦值語句支持鏈式賦值、增量賦值、序列解包賦值等多種形式。
x = 1 # 普通賦值 x = y = 1 # 鏈式賦值 x += 1 # 增量賦值(使用增量運算符 += ) x,y,z = (1,2,3) # 序列解包賦值(將元組中的3個值分別賦給x,y,z) x,y = y,x # 交換x和y的值
● del語句
del語句(del既不是內置函數,也不是運算符,是語句)能夠移除一個變量名對實例的引用,而且也會移除這個變量名自己。 可是del不會真正在內存中刪除實例,刪除實例的工做是由「垃圾收集器」作的,當某個實例的被引用計數減到0時,垃圾收集器會真正刪除這個實例並釋放其佔用的內存。
# ---------- del 示例1:---------- x = 1 del x # 以後x就不可用了 # ---------- del 示例2:---------- x = 'Hello' y = x del x # 雖然解除了x對'Hello'的引用,但因爲y還指向'Hello',故'Hello'其實還在 print(y) # 結果爲 'Hello'
● 條件表達式
條件表達式和C語言中條件賦值功能大體相同,語法格式以下:
x = a if 布爾表達式 else b
含義爲:當布爾表達式的值爲True,則將a賦值給x;不然,將c賦值給x。 條件表達式在「列表推導」和「生成器表達式」中比較有用。
● 連續比較表達式
Python支持比較運算符的連寫,如:a < b < c < d,這樣可讓代碼看上去更精簡。