原:http://my.oschina.net/junwuwei/blog/29625
Python的運算符與用法
運算符 |
名稱 |
說明 |
例子 |
---|---|---|---|
+ | 加 | 兩個對象相加 |
3 + 5得到8。'a' + 'b'得到'ab'。 (注意:6+'a'這樣是錯誤的,但在PHP裏這樣是可以運行的) |
- | 減 | 得到負數或是一個數減去另一個數 | -5.2得到一個負數。50 - 24得到26。 |
* | 乘 | 兩個數相乘或是返回一個被重複若干次的字符串 |
2 * 3得到6。'la' * 3得到'lalala'(但PHP裏這樣運算返值爲0)。 在PHP中要實現相同功能,有函數: str_repeat(),str_pad() |
** | 冪 |
返回x的y次冪 |
3 ** 4得到81(即3 * 3 * 3 * 3) |
/ | 除 | x除以y | 4/3得到1(整數的除法得到整數結果)。4.0/3或4/3.0得到1.3333333333333333 |
// | 取整除 | 返回商的整數部分 | 4 // 3.0得到1.0 |
% | 取模 | 返回除法的餘數 |
8%3得到2。-25.5%2.25得到1.5 (在PHP中:-8%3 = -2 與 8%-3 = 2 ) |
<< | 左移 | 把一個數的比特向左移一定數目(每個數在內存中都表示爲比特或二進制數字,即0和1) | 2 << 2得到8。——2按比特表示爲10 |
>> | 右移 | 把一個數的比特向右移一定數目 | 11 >> 1得到5。——11按比特表示爲1011,向右移動1比特後得到101,即十進制的5。 |
& | 按位與 | 數的按位與 | 5 & 3得到1。 |
| | 按位或 | 數的按位或 | 5 | 3得到7。 |
^ | 按位異或 | 數的按位異或 | 5 ^ 3得到6 |
~ | 按位翻轉 | x的按位翻轉是-(x+1) | ~5得到6。 |
< | 小於 | 返回x是否小於y。所有比較運算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價。注意,這些變量名的大寫。 | 5 < 3返回0(即False)而3 < 5返回1(即True)。比較可以被任意連接:3 < 5 < 7返回True。 |
> | 大於 | 返回x是否大於y | 5 > 3返回True。如果兩個操作數都是數字,它們首先被轉換爲一個共同的類型。否則,它總是返回False。 |
<= | 小於等於 | 返回x是否小於等於y | x = 3; y = 6; x <= y返回True。 |
>= | 大於等於 | 返回x是否大於等於y | x = 4; y = 3; x >= y返回True。 |
== | 等於 | 比較對象是否相等 | x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。 |
!= | 不等於 | 比較兩個對象是否不相等 | x = 2; 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。短路計算在這裏也適用。 |
fc_lamp提醒你:Python的邏輯運算符裏沒有“!(非),&&(與),||(或)” 這三個表示符號(完全是英文上的表示)。
即 not,and,or
參看:http://hi.baidu.com/fc_lamp/blog/item/6a5fdf256168183ad40742a9.html
另外單獨說說python的字符串運算符:
瞭解PHP的人知道,在PHP裏字符串的連接運算符爲(“.”),它返回其左右參數連接後的字符串。如:
<?php
$a = 55;
$str = 'abc';
$str .= 'def';
$str .= $a; //在運算時,PHP自動把$a的類型轉爲了字符串類型
$str = $str.'s99s';
//在PHP裏變量與字符串之間連接是通過點運算來實現連接的
echo $str;
但在python裏,可能大家已從運算表裏找到了,即 (“+”),但是與PHP不同的是兩個對象相加,兩個對象必須是同類型的,不同類型的兩個對象是不能相加的。
要實現像上面PHP代碼裏的運算,必須保證兩對象類型一致。如:
print('=============python字符串運算符================')
numa = 3
strs = 'This first'
strs1 = strs,numa #輸出值爲:('This first',3)
print(strs1)
######################
#類型對象不匹配,無法正常運算
#strs2 = strs+numa
#print(strs2)
######################
strs3 = strs+str(numa) #改變numa的類型,使其成爲字符串,或者 strs += str(numa)
print(strs3) #輸出爲This first3
#另外:如果strs = '6',則可進行:strs3 = int(strs)+numa這樣的運算,輸出爲9
python裏也沒有類似"xx ? xx : xx"這樣的三元運算符,可用:
charset = 'utf8' if 'charset' not in param else param['charset'];
參看:http://chroya.iteye.com/blog/726479
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,...' | 字符串轉換 |
另注:
1 dir()函數 :
你可以使用內建的dir函數來列出模塊定義的標識符。標識符有函數、類和變量。
當你爲dir()提供一個模塊名的時候,它返回模塊定義的名稱列表。如果不提供參數,它返回當前模塊中定義的名稱列表。
2 del
用於刪除一個變量,這類似於PHP裏的unset()
3 python的Bool值:True ,False
我寫程序很喜歡用三元運算符,但是在python中居然不支持,有點鬱悶,查了下資料,發現還是有解決方案的。
比如,一個這樣的函數:
- function trans(v) {
- return (v==0)?1:v;
- }
嘖嘖,三元運算符看着就是漂亮,不知道python爲什麼不支持。
下面看一下python的解決方案一:
- def trans(v):
- return 1 if v==0 else v
也就是if else語句的簡寫形式,意思一看就明白,看起來還不錯。
下面是解決方案二:
- def trans(v):
- return v==0 and 1 or v
用到了與或運算符的特性。
解釋一下:如果v等於0爲true,則跟1做與運算,爲true,則不進行後面的或運算,直接返回1;如果v等於0爲false,則跟1做與運算,爲false,繼續進行或運算,返回v。