運算子與表示式

2021-08-23 13:22:22 字數 3514 閱讀 8713

:( 運算子 的功能是完成某件事,它們由如+這樣的符號或者其他特定的關鍵字表示。運算子需要資料來進行運算,這樣的資料被稱為 運算元 。在這個例子中,2和3是運算元。

運算子我們將簡單瀏覽一下運算子和它們的用法:

技巧你可以互動地使用直譯器來計算例子中給出的表示式。例如,為了測試表示式2 + 3,使用互動式的帶提示符的python直譯器:

>>> 2 + 3

5>>> 3 * 5

15>>>

表5.1 運算子與它們的用法

運算子名稱說明例子

+加兩個物件相加3 + 5得到8。'a' + 'b'得到'ab'。

-減得到負數或是乙個數減去另乙個數-5.2得到乙個負數。50 - 24得到26。

*乘兩個數相乘或是返回乙個被重複若干次的字串2 * 3得到6。'la' * 3得到'lalala'。

**冪  返回x的y次冪3 ** 4得到81(即3 * 3 * 3 * 3)

/除x除以y4/3得到1(整數的除法得到整數結果)。4.0/3或4/3.0得到1.3333333333333333

//取整除返回商的整數部分4 // 3.0得到1.0

%取模返回除法的餘數8%3得到2。-25.5%2.25得到1.5

《左移把乙個數的位元向左移一定數目(每個數在記憶體中都表示為位元或二進位制數字,即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是否大於y5 > 3返回true。如果兩個運算元都是數字,它們首先被轉換為乙個共同的型別。否則,它總是返回false。

<=小於等於返回x是否小於等於yx = 3; y = 6; x <= y返回true。

>=大於等於返回x是否大於等於yx = 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。短路計算在這裡也適用。

運算子優先順序

下面這個表給出python的運算子優先順序,從最低的優先順序(最鬆散地結合)到最高的優先順序(最緊密地結合)。這意味著在乙個表示式中,python會首先計算表中較下面的運算子,然後在計算列在表上部的運算子。

下面這張表(與python參考手冊中的那個表一模一樣)已經顧及了完整的需要。事實上,我建議你使用圓括號來分組運算子和運算元,以便能夠明確地指出運算的先後順序,使程式盡可能地易讀。例如,2 + (3 * 4)顯然比2 + 3 * 4清晰。與此同時,圓括號也應該正確使用,而不應該用得過濫(比如2 + (3 + 4))。

表5.2 運算子優先順序

運算子描述

lambdalambda表示式

or布林「或」

and布林「與」

not x布林「非」

in,not in成員測試

is,is not同一性測試

<,<=,>,>=,!=,==比較

|按位或

^按位異或

&按位與

<<,>>移位

+,-加法與減法

*,/,%乘法、除法與取餘

+x,-x正負號

~x按位翻轉

**指數

x.attribute屬性參考

x[index]下標

x[index:index]定址段

f(arguments...)函式呼叫

(experession,...)繫結或元組顯示

[expression,...]列表顯示

字典顯示

'expression,...'字串轉換

其中我們還沒有接觸過的運算子將在後面的章節中介紹。

在表中列在同一行的運算子具有 相同優先順序 。例如,+和-有相同的優先順序。

計算順序

預設地,運算子優先順序表決定了哪個運算子在別的運算子之前計算。然而,如果你想要改變它們的計算順序,你得使用圓括號。例如,你想要在乙個表示式中讓加法在乘法之前計算,那麼你就得寫成類似(2 + 3) * 4的樣子。

結合規律

運算子通常由左向右結合,即具有相同優先順序的運算子按照從左向右的順序計算。例如,2 + 3 + 4被計算成(2 + 3) + 4。一些如賦值運算子那樣的運算子是由右向左結合的,即a = b = c被處理為a = (b = c)。

表示式使用表示式

例5.1 使用表示式

#!/usr/bin/python

# filename: expression.py

length = 5

breadth = 2

area = length * breadth

print 'area is', area

print 'perimeter is', 2 * (length + breadth)

輸出$ python expression.py

area is 10

perimeter is 14

它如何工作

矩形的長度與寬度儲存在以它們命名的變數中。我們借助表示式使用它們計算矩形的面積和邊長。我們表示式length * breadth的結果儲存在變數area中,然後用print語句列印。在另乙個列印語句中,我們直接使用表示式2 * (length + breadth)的值。

另外,注意python如何列印「漂亮的」輸出。儘管我們沒有在'area is'和變數area之間指定空格,python自動在那裡放了乙個空格,這樣我們就可以得到乙個清晰漂亮的輸出,而程式也變得更加易讀(因為我們不需要擔心輸出之間的空格問題)。這是python如何使程式設計師的生活變得更加輕鬆的乙個例子。

概括我們已經學習了如何使用運算子、運算元和表示式——這些使任何程式的基本組成部分。接下來,我們將學習如何通過語句在我們的程式中使用這些部分。

1

運算子與表示式

學習c語言時,在我們已經學習了型別,常量與變數,接下來就是通過學習運算子與表示式對型別,常量與變數進行運算。簡單說一下概念,用來對資料進行運算的符號,就可以稱為運算子。c中運算子和資料構成的式子,就稱為表示式。表示式再在其後加乙個分號,即構成c 語言語句。先說一下運算子吧。c語言的運算子多,一般記住...

運算子與表示式

數 算 注意事項 兩端的變數必須是同種型別,並返回同種型別。取餘運算,負數的餘數符號與被模數符號相同,1 5 1,1 5 1 num n,n 0,結果範圍 0,n 是週期函式。注意整除問題 1 2 0 整數的除法是整除 1.0 2 0.5 1d 2 0.5 單獨的前 後自增或自減是沒區別的,有了賦值...

運算子與表示式

1.了解什麼是表示式 表示式是由運算子與資料組成的式子,每乙個表示式都有運算的結果。2.我的老師每次使用這個運算子的時候都會說到這個老梗,sizeof是運算子不是函式,別看sizeof後面還要加乙個括號,但不是所有的都是函式。這也從側面sizeof在面試題中經常出現。3.隱式轉換型別 由於有的編譯系...