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--
-
比較(關係)運算子
==
!=
<
>
>=
<=
-
邏輯運算子 且
and
或or
非not
-
成員運算子 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
複製程式碼