一、變量
變量即把程序運算的中間結果臨時存到內存里,以備后續調用。
1.定義規則
a)變量名只能是字母、數字或下划線的任意組合
b)變量名的第一個字符不能是數字
c)關鍵字不能聲明為變量名
2.定義方式
駝峰體:NumberOfStudents
下划線:number_of_students(官方推薦)
3.變量名注意事項
變量名盡量不為中文、拼音等,不宜過長,不宜詞不達意
4.變量的創建
當定義一個變量:name='謝欣然'時,程序開辟了一塊內存空間,將'謝欣然'存儲進去,再讓變量名name指向'謝欣然'所在的內存地址。
id(obj)得到obj的地址(十進制)
name = '謝欣然'
print(id(name))
'''
2429319527952
'''
5.優化機制
python認為一些“看起來像python標識符的字符”和小整數字在開發中是常用的;
因此,出於節省內存的角度思考,對於這部分字符串和數字做出了優化;
python解釋器會由於要定義的新變量內容與之前定義過的變量內容相同而不讓這部分內容占用新的內存空間。
a)對於[-5,257)范圍內的數字有優化機制:
>>> a = -5
>>> b = -5
>>> id(a)
1608351664
>>> id(b)
1608351664
對於[-5,257)范圍外的數字沒有優化機制:
>>> a = 257
>>> b = 257
>>> id(a)
2502556623984
>>> id(b)
2502558182288
b)短字符串有優化機制:
>>> a = "abc"
>>> b = "abc"
>>> id(a)
2502557973560
>>> id(b)
2502557973560
長字符串沒有優化機制:
>>> a = "Hello World, I'm here."
>>> b = "Hello World, I'm here."
>>> id(a)
2502558942240
>>> id(b)
2502558942096
注意:這種現象也與編譯器有關,在IDLE中測試的范圍為[-5,256]的整數與短字符串,但在Pycharm中, 整數超過256 和 字符串 即使帶有空格也都認為地址一樣。
s1 = 'My name is xxr.'
s2 = 'My name is xxr.'
print(id(s1), id(s2))
a = 257
b = 257
print(id(a), id(b))
'''
2687253112048 2687253112048
2687223780784 2687223780784'''
參考鏈接:https://blog.csdn.net/qq_38183592/article/details/89379224
6.身份運算
運算符 | 描述 | 實例 |
---|---|---|
is | 判斷兩個標識符是否引用自一個對象 | x is y,類似id(x) == id(y) |
is not | 判斷兩個標識符是否引用自不同對象 | x is not y,類似id(x) != id(y) |
7.is與==辨析
Python中對象包含的三個基本要素,分別是:id(身份標識)、type(數據類型)和value(值)。
== 比較操作符:用來比較兩個對象是否相等,value做為判斷因素;
is 同一性運算符:比較判斷兩個對象是否相同,id(唯一的身份標識)做為判斷因素。
>>> a = 1
>>> b = 1
>>> a == b # 此時a與b值相同,id也相同
True
>>> c = 'hello world!'
>>> d = 'hello world!'
>>> c == d # 此時c與d值相同,id不同
True
>>> a = [1,2,3]
>>> b = [1,2,3]
>>> a == b # 此時a與b值相同,id不同
True
>>> a = 1
>>> b = 1
>>> id(a) # 查看內存地址
140714323927888
>>> id(b) # 查看內存地址
140714323927888
>>> a is b
True
>>> c = 'hello world!'
>>> d = 'hello world!'
>>> id(c) # 查看內存地址
1382544135472
>>> id(d) # 查看內存地址
1382543623920
>>> c is d
False
>>> a = [1,2,3]
>>> b = [1,2,3]
>>> id(a) # 查看內存地址
1382542667144
>>> id(b) # 查看內存地址
1382542172872
>>> a is b
False
補充:關於內存地址問題詳見第5點優化機制,即對於整型和短字符串,取值相同的變量所占內存空間為同一塊區域,所以比較操作符==與同一性運算符is判斷均為True。
二、常量
在python中,沒有一個專門的語法代表常量,程序員約定俗成用變量名全部大寫代表常量。