Python學習之路--02變數與運算子

來源:互聯網
上載者:User

標籤:簡單   efi   http   元組   處理   src   erro   code   分享   

目錄

  • 變數
    • 命名規範
    • 實值型別與參考型別
  • 運算子
    • 算數運算子
    • 賦值運算子
    • 關係運算子
    • 邏輯運算子
    • 成員運算子
    • 身份運算子
      • 對象三大特徵
    • 位元運算符
變數

變數即對某種類型資料實體的抽象,或者說給某個類型資料的實體起個名字。基本操作方式是var = xxx=是賦值操作,注意,python裡面不需要像Java一樣的變數聲明

>>> [1,2,3,4,5,6]*3+[1,2,3]+[1,2,3,4,5,6][1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 1, 2, 3, 4, 5, 6]>>> A = [1,2,3,4,5,6]>>> print(A)[1, 2, 3, 4, 5, 6]>>> B = [1,2,3]>>> A * 3 + B + A[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 1, 2, 3, 4, 5, 6]>>> skill = [‘新月打擊‘,‘蒼白之瀑‘]

變數可以方便我們的操作。變數起名要規範

命名規範
  • python規定變數可以以字母、底線開頭,由字母、數字、底線組成
>>> 0a = 2SyntaxError: invalid syntax>>> a2 = ‘f‘>>> _2ab=‘1‘
  • python識別大小寫,A與a不同
>>> bTraceback (most recent call last):  File "<pyshell#12>", line 1, in <module>    bNameError: name ‘b‘ is not defined>>> B[1, 2, 3]
  • python是弱類型語言,同一變數沒有類型限制
>>> a = ‘1‘>>> a = 1>>> a = (1,2,3)>>> a = {1,2,3}
  • 系統保留關鍵字不能當做變數名
實值型別與參考型別

int、str、tuple是實值型別,是不可變的,每次賦值都會開闢新的空間進行儲存。list、set、dict是參考型別,每個變數類似於一個“指標”,指向一個固定位置,修改一個會影響另一個。

>>> a = {1,2,3}>>> b = a>>> a = 3>>> print(b){1, 2, 3}>>> a = [1,2,3,4,5]>>> b = a>>> a[0] = ‘1‘>>> print(a)[‘1‘, 2, 3, 4, 5]>>> print(b)[‘1‘, 2, 3, 4, 5]

進一步說明實值型別不可變。

>>> a = ‘hello‘>>> id(a)2166410629392>>> a = a + ‘ python‘>>> id(a)2166410595440>>> ‘python‘[0]‘p‘>>> ‘python‘[0]=‘m‘Traceback (most recent call last):  File "<pyshell#33>", line 1, in <module>    ‘python‘[0]=‘m‘TypeError: ‘str‘ object does not support item assignment

函數id()用於顯示某個變數在記憶體中的地址

>>> b = [1,2,3]>>> b.append(4)>>> print(b)[1, 2, 3, 4]>>> c = (1,2,3)>>> c.append(4)Traceback (most recent call last):  File "<pyshell#11>", line 1, in <module>    c.append(4)AttributeError: ‘tuple‘ object has no attribute ‘append‘

因為元組不可變,所以沒有追加元素等操作。list等可變所以能添加、刪除、修改。

>>> a = (1,2,3,[1,2,4])>>> a[2]3>>> a[3][1, 2, 4]>>> a[3][2]4>>> a = (1,2,3,[1,2,[‘a‘,‘b‘,‘c‘]])>>> a[3][2][1]‘b‘>>> a[2] = ‘3‘Traceback (most recent call last):  File "<pyshell#26>", line 1, in <module>    a[2] = ‘3‘TypeError: ‘tuple‘ object does not support item assignment>>> a[3][2] = ‘4‘>>> print(a)(1, 2, 3, [1, 2, ‘4‘])

這一組合例子中,因元組不可變而list可變,所以a[3]儲存的是一個不變的地址,地址裡的內容可變

運算子

算數運算子

包括常見的+,-,*,/,%等,冪運算python採用**來實現。其中要注意+-*在處理某些資料結構時的含義,如拼接,差集,複製等

>>> ‘hello‘+‘ world‘‘hello world‘>>> [1,2,3]*3[1, 2, 3, 1, 2, 3, 1, 2, 3]>>> 3 - 12>>> 3 / 21.5>>> 3 // 21>>> 5 % 21>>> 2 ** 24
賦值運算子

顧名思義,通過一些簡單的運算(甚至沒有),將資料賦予某個變數,操作的核心一定是落在賦值上

>>> c = 1>>> c =  c + 1>>> print(c)2>>> c += 1>>> print(c)3>>> b =  2>>> a = 3>>> b += a>>> print(b)5>>> b -= a>>> print(b)2>>> b *= a>>> print(b)6
關係運算子

用於確定兩個元素大小關係的運算子號。python並不是只有數字類型才能做大小比較

>>> 1 > 1False>>> 1 >= 1True>>> a = 1>>> b = 2>>> a != bTrue>>> ‘a‘ > ‘b‘False>>> ‘abc‘ < ‘abd‘True>>> [1,2,3] < [1,3,2]True>>> (1,2,3) > (4,5,6)False

單個字元比較ASCII碼,字串比較大小是對每一個對位字元進行大小比較。關係運算的重點是運算完成後返回的Boolean值

邏輯運算子

特點:操作布爾值,返回布爾值。操作只有三種:與、或、非

>>> True and TrueTrue>>> True and FalseFalse>>> True or FalseTrue>>> False or FalseFalse>>> not FalseTrue

對於非布爾類型的判定方法:

  • 對於int、float等數實值型別,非0表示True,0表示False
  • 對於字串,非空表示True,空表示False
  • 對於“組”,list、set等來說。非空表示True,空表示False
>>> 1 and 11>>> ‘a‘ and ‘b‘‘b‘>>> ‘a‘ or ‘b‘‘a‘>>> not ‘a‘False>>> not []True>>> not [1,2]False

not操作返回的是顯性的True和False。但andor不一定

>>> not []True>>> not [1,2]False>>> [1] or [][1]>>> 1 and 00

andor結果顯示遵循“掃描原則”,若當前位已能決定結果則返回當前位,否則繼續

>>> 0 and 10>>> 1 and 22>>> 2 and 11>>> 0 or 11>>> 1 or 01>>> 1 or 21
成員運算子

包括innot in兩個操作,用於判斷成員是否屬於某一個組

>>> a  = 1>>> a in [1,2,3,4,5]True>>> b = 6>>> b in [1, 2,3,4]False>>> b not in (1,2,3,4,5)True>>> b not in {1,2,3,4,5}True

對於字典(dict)類型,innot in操作比對的是key鍵

>>> b = ‘a‘>>> b in {‘c‘:1}False>>> b = 1>>> b in {‘c‘:1}False>>> b  = ‘c‘>>> b in {‘c‘:1}True
身份運算子

包括isnot is。用於判斷符號左右兩端是否“身份”相同

>>> a = 1>>> b = 1>>> a is bTrue>>> a = 2>>> a is bFalse>>> a = ‘hello‘>>> b = ‘world‘>>> a is bFalse

初看上述這些判別會誤以為他和關係運算子(==)相同。但看下例會發現不同

>>> a = 1>>> b = 1.0>>> a is bFalse>>> a == bTrue

身份運算子所謂“身份”,其實核對的是記憶體位址是否相同,不關心值是否相同,簡單粗暴的說就是比對id()值是否相同

>>> a = 1>>> b = 1>>> id(a)1429827040>>> id(b)1429827040>>> a is bTrue>>> a == bTrue>>> b = 1.0>>> id(b)2354290105056>>> a is bFalse>>> a == bTrue

對於set、tuple等也同樣可以使用身份運算子

>>> a = {1,2,3}>>> b = {2,1,3}>>> a is bFalse>>> a == bTrue>>> a = (1,2,3)>>> b = (2,1,3)>>> a is bFalse>>> a == bFalse

因為集合的無序性所以關係比較是相同的,元組無此特性故而關係比較結果為False。同時因為每一個的記憶體位址都是特異的,所以他們都是身份獨立的,互不相同。

對象三大特徵

python中一切皆對象

  • 值 value,==
  • 身份id(),is
  • 類型type(),isinstance

值和身份判斷上文已講,這裡說明一下類型判斷

>>> a =‘hello‘>>> type(a) == intFalse>>> type(a) == strTrue>>> isinstance(a,str)True>>> isinstance(a,int)False>>> isinstance(a,(int,str,float))True>>> isinstance(a,(int,float))False

類型判斷就是為了判定類型,可以用type(x)==bb方式,但更推薦isinstance(x,(aa,bb,...))方法,二者都返回布爾值。但後者可以判斷x的子類是否屬於某一種類型,而type()不行

位元運算符

主要以按位與&和按位或|為代表,將數字當做二進位然後以每一位為獨立單位進行運算(位元運算)。

>>> a = 2>>> b = 3>>> a & b2>>> a = 2>>> b  = 3>>> a | b3

這裡的與和或操作同中學數學,&操作中當有一個為0時,結果為0。|操作中當有一個為1時,結果為1

>>> a = 1>>> ~a-2>>> a << 12>>> a = 3>>> a >> 11

~(非)按位取反操作涉及到二進位補碼,如上例所示。負數表示為符號位+補碼,擷取其表示數需要摘出符號位(0為正,1為負),剩餘部分取反加一。

>><<是對每一位進行移位元運算,規則是向右移動時,高位補符號位,向左移動時,低位補0

Python學習之路--02變數與運算子

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.