1. 程式人生 > >一、運算子和表示式

一、運算子和表示式

1.Python是什麼?

  • Python 是一種解釋型語言
  • Python 是互動式語言
  • Python 是面嚮物件語言
  • Python 是初學者的語言
  • 基於值的記憶體管理方式
  • 如果為不同變數賦值為相同值,這個值在記憶體中只有一份,多個變數指向同一塊記憶體地址

2.語法

  • 起步
>>>print("Hello World")  
Hell World

3.變數和資料型別

在Python中,不需要事先宣告變數名及其型別,直接賦值即可建立各種型別的物件變數,但Python屬於強型別程式語言

  • 變數
>>>message = "Hell Python"
>>
>print(message) Hell Python

4.運算子和表示式

  • 數字運算
>>>1+1
2
>>>1-2
-1
>>>1/2
0.5
>>>1*2
2
>>>2**3
8
# 浮點數運算,小數位數不確定
>>> 0.2+0.1
0.30000000000000004
>>> 0.3+0.2
0.5
  • 複數處理
a = 3+4j
a.real   # 檢視複數實部,結果為 3
a.imag   #檢視複數虛部,結果為 4
a.conjugate() #返回共軛複數,結果為 3-4j
#定義一個新的複數
b = 5+6j a*b #複數乘法,結果為-9+38j a/b #複數除法, 結果為 0.6393442622950819+0.03278688524590165j
  • +運算子 +運算子除了用於算術加法以外,還可以用於列表、元組、字串的連線,但不支援不同型別的物件之間相加或連線
>>> [1, 2, 3] + [4, 5, 6]          #連線兩個列表
[1, 2, 3, 4, 5, 6]
>>> (1, 2, 3) + (4,)                #連線兩個元組
(1, 2, 3, 4)
>>> 'abcd' + '1234'
#連線兩個字串 'abcd1234' >>> 'A' + 1 #不支援字元與數字相加,丟擲異常 TypeError: Can't convert 'int' object to str implicitly >>> True + 3 #Python內部把True當作1處理 4 >>> False + 3 #把False當作0處理 3
  • *運算子 *運算子不僅可以用於數值乘法,還可以用於列表、字串、元組等型別,當列表、字串或元組等型別變數與整數進行“*”運算時,表示對內容進行重複並返回重複後的新物件
>>> 2.0 * 3                     #浮點數與整數相乘
6.0
>>> (3+4j) * 2                  #複數與整數相乘
(6+8j)
>>> (3+4j) * (3-4j)             #複數與複數相乘
(25+0j)
>>> "a" * 10                    #字串重複
'aaaaaaaaaa'
>>> [1,2,3] * 3                 #列表重複
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> (1,2,3) * 3                 #元組重複
(1, 2, 3, 1, 2, 3, 1, 2, 3)
  • 除法 /// Python中的除法有兩種,“/”和“//”分別表示除法和整除運算,並且Python 2.x和Python 3.x對“/”運算子的解釋也略有區別。在Python 3.5.2中運算結果如下:
>>> 3/5
0.6
>>> 3//5
0
>>> 3.0/5
0.6
>>> 3.0//5
0.0
>>> 13//10
1
>>> -13//10
-2
  • %取模 %運算子除去可以用於字串格式化之外,還可以對整數和浮點數計算餘數。但是由於浮點數的精確度影響,計算結果可能略有誤差
>>> 3.1%2
1.1
>>> 6.3%2.1
2.0999999999999996
>>> 6%2
0
>>> 6.0%2
0.0
>>> 6.0%2.0
0.0
>>> 5.7%4.8
0.9000000000000004
  • in關鍵字 成員測試運算子in用於成員測試,即測試一個物件是否為另一個物件的元素
>>> 3 in [1, 2, 3]                      #測試3是否存在於列表[1, 2, 3]中
True
>>> 5 in range(1, 10, 1)          #range()是用來生成指定範圍數字的內建函式
True
>>> 'abc' in 'abcdefg'              #子字串測試
True
>>> for i in (3, 5, 7):                #迴圈,成員遍歷
	print(i, end='\t')

3	5	7
  • is運算子 同一性測試運算子,is用來測試兩個物件是否是同一個,如果是則返回True,否則返回False。如果兩個物件是同一個,二者具有相同的記憶體地址
>>> 3 is 3
True
>>> x = [300, 300, 300]
>>> x[0] is x[1]                #基於值的記憶體管理,同一個值在記憶體中只有一份
True
>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> x is y                        #上面形式建立的x和y不是同一個列表物件
False
  • 位運算子 位運算子只能用於整數,其內部執行過程為:首先將整數轉換為二進位制數,然後右對齊,必要的時候左側補0,按位進行運算,最後再把計算結果轉換為十進位制數字返回
>>> 3 << 2                   #把3左移2位
12
>>> 3 & 7                    #位與運算
3
>>> 3 | 8                     #位或運算
11
>>> 3 ^ 5                    #位異或運算
6
  • 集合運算 集合的交集、並集、對稱差集等運算藉助於位運算子來實現,而差集則使用減號運算子實現(注意,並集運算子不是加號)
>>> {1, 2, 3} | {3, 4, 5}           #並集,自動去除重複元素
{1, 2, 3, 4, 5}
>>> {1, 2, 3} & {3, 4, 5}         #交集
{3}
>>> {1, 2, 3} ^ {3, 4, 5}          #對稱差集
{1, 2, 4, 5}
>>> {1, 2, 3} - {3, 4, 5}          #差集
{1, 2}
  • 邏輯運算子 邏輯運算子and和or具有惰性求值特點
>>> 3>5 and a>3              #注意,此時並沒有定義變數a
False
>>> 3>5 or a>3                #3>5的值為False,所以需要計算後面表示式
NameError: name 'a' is not defined
>>> 3<5 or a>3                #3<5的值為True,不需要計算後面表示式
True
>>> 3 and 5                     #最後一個計算的表示式的值作為整個表示式的值
5
>>> 3 and 5>2
True
>>> 3 not in [1, 2, 3]         #邏輯非運算not
False
>>> 3 is not 5                   #not的計算結果只能是True或False之一
True
  • Python 3.5增加了一個新的矩陣相乘運算子@
  • 逗號的歧義(逗號並不是運算子,只是一個普通分隔符)
>>> 'a' in 'b', 'a'
(False, 'a')
>>> 'a' in ('b', 'a')
True
>>> x = 3, 5
>>> x
(3, 5)
>>> 3 == 3, 5
(True, 5)
>>> x = 3+5, 7
>>> x
(8, 7)
  • 單個運算 在Python中,單個任何型別的物件或常數屬於合法表示式,使用運算子連線的變數和常量以及函式呼叫的任意組合也屬於合法的表示式
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = a + b
>>> c
[1, 2, 3, 4, 5, 6]
>>> d = list(map(str, c))
>>> d
['1', '2', '3', '4', '5', '6']
>>> import math
>>> list(map(math.sin, c))
[0.8414709848078965, 0.9092974268256817, 0.1411200080598672, -0.7568024953079282, -0.9589242746631385, -0.27941549819892586]
>>> 'Hello' + ' ' + 'world'
'Hello world'
>>> 'welcome ' * 3
'welcome welcome welcome '
>>> ('welcome,'*3).rstrip(',')+'!'
'welcome,welcome,welcome!'

5.型別轉換

  • 數值轉字串str()
>>> age=23
>>> name="MY age is"
>>> print(name+" "+age)
Traceback (most recent call last):     //出錯
  File "<pyshell#2>", line 1, in <module>
    print(name+age)
TypeError: can only concatenate str (not "int") to str    //資料型別錯誤
>>> print(name+" "+str(age))
MY age is 23
  • 字串轉數值int()
>>> print(23+int(age))
1823

6.其他細節

  • 單行註釋 # 符號
  • 多行註釋
'''
這是多行註釋(三對單引號) 
'''

"""
這是多行註釋(三對雙引號)
"""