Python3學習筆記3,變數、運算子

blacker2018發表於2018-07-02

python中無須定義變數

  • 系統保留關鍵字
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 
'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 
'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 
'with', 'yield']
複製程式碼
  • 變數名區分大小寫
  • 注意b的值隨a的變化情況
>>> a=1
>>> b=a
>>> a=3
>>> b
1
>>> a=[1,2,3,4]
>>> b=a
>>> a[0]=11
>>> b
[11, 2, 3, 4]
>>> id(a)
4363552648
>>> id(b)
4363552648
>>> a=1
>>> b=a
>>> a=3
>>> id(a)
4305304000
>>> id(b)
4305303936
複製程式碼

原因:

int:值型別

list:引用型別

id()

id(vari)返回變數vari在記憶體中的地址

值型別:int str tuple(不可改變)

引用型別:list set dict (可改變)

>>> a = 'hello'
>>> a[0]=q
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'q' is not defined
>>> b=[1,2,3]
>>> b.append(4)
>>> b
[1, 2, 3, 4]
>>> c=(1,2,3)
>>> c.append(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
複製程式碼

運算子

  • 算數運算子 + - * / // 整除 % 餘數 ** 平方

  • 賦值運算子 = += 先做加法運算 再做賦值運算 *= /= %= **= //= **注意:**python中沒有自加運算子 i++、自減運算子 i--

  • 比較(關係)運算子 == != < > >= <=

  • 邏輯運算子andornot

  • 成員運算子 1.一個元素是否在一組元素中 2.返回值為布林型別 in not in

  • 身份運算子 比較兩個變數的身份是否相等 身份:記憶體地址 is is not

  • 位運算子 把數字當作二進位制數進行運算 & 按位與 | 按位或 ^ 按位異或 ~ 按位取反 << 左移 >> 右移

運算子 描述 例項
& 按位與運算子:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0 (a & b) 輸出結果 12 ,二進位制解釋: 0000 1100
| 按位或運算子:只要對應的二個二進位有一個為1時,結果位就為1。 (a | b) 輸出結果 61 ,二進位制解釋: 0011 1101
^ 按位異或運算子:當兩對應的二進位相異時,結果為1 (a ^ b) 輸出結果 49 ,二進位制解釋: 0011 0001
~ 按位取反運算子:對資料的每個二進位制位取反,即把1變為0,把0變為1 。 ~x 類似於 -x-1 (~a ) 輸出結果 -61 ,二進位制解釋: 1100 0011,在一個有符號二進位制數的補碼形式。
<< 左移動運算子:運算數的各二進位全部左移若干位,由 << 右邊的數字指定了移動的位數,高位丟棄,低位補0。 a << 2 輸出結果 240 ,二進位制解釋: 1111 0000
>> 右移動運算子:把">>"左邊的運算數的各二進位全部右移若干位,>> 右邊的數字指定了移動的位數 a >> 2 輸出結果 15 ,二進位制解釋: 0000 1111

舉個例子

>>> b=1
>>> b+=b>=1
>>> print(b)
複製程式碼

此時會輸出什麼?會輸出2 拆分來看b>=1返回True b+=True也就是

>>> b+=True
>>> b
2
複製程式碼

Python中一切都是物件

物件的三大特徵:型別、身份、值

比較身份用身份運算子 is is not

比較值用比較關係符

比較型別呢?

>>> a = 'hello'
>>> type(a) == str
True
>>> type(a) == int
False
複製程式碼

上面的方法可以比較型別,但更推薦下面的方法:

isinstance(a,b) b可以為元組,只要a滿足其中一種型別,返回True

>>> isinstance(a,str)
True
>>> isinstance(a,int)
False
>>> isinstance(a,(str,list,int))
True
>>> isinstance(a,(list,int))
False
複製程式碼

相關文章