python變數賦值是指建立乙個物件並繫結到某個變數上,如下建立乙個列表物件,並賦值給變數a:a = [3,1,2]
以上基本正規化可表達為:
variable1 =object1
而別名是指變數1賦值給變數2的過程:
variable2 =variable1
比如:b =a
並且修改變數b,變數a也會變化,所以被稱為別名:
b[0] = 8 #
a[0] 也會變為8
別名和淺拷貝會被經常混淆,別名如上所述僅僅是某個變數賦值給某個變數,僅此而已。而淺拷貝已經發生一層複製,並且在這一層上修改某個變數,不會影響另乙個變數。如下:
b =a.copy()
b[0] = 8 #
此時修改b[0]不會影響a
python一切皆物件,而每個物件又有"三大件":編號
型別值基於此,a == b 比較的是物件a和b的值是否相等;a is b 比較的是物件a和b的編號是否相等。記住這句話,或許你再也不會混淆這兩個操作符。
物件是可以做有限次巢狀的,可以有很多層。淺拷貝只拷貝最外層;而深拷貝會拷貝所有層。
a = [[3,1,2], [5,4,6]]
淺拷貝意味著修改b的第一層不影響a,但是修改b的第二層會同步影響到a,如下修改第二層會同步影響a
from copy import
copy
in [8]: b=copy(a)
in [9]: b[0][0]=8in [10]: a
out[10]: [[8, 1, 2], [5, 4, 6]]
in [11]: b
out[11]: [[8, 1, 2], [5, 4, 6]]
而深拷貝後,修改b的任意層都不會影響a
還記得第3節提起的每個物件"三大件"
嗎?每個物件都有型別,而我們討論可變和不可變時,其實指代的正是型別。
不可變的型別常見的:整型、字串、浮點型、元組、凍結集合
可變的型別常見的:列表、字典、集合
a = (3,1)
a[0] = 10typeerror:
'tuple
' object does not
support item assignment
而可變意味著值能被修改:
in [14]: a = [3,1]
in [15]: a[0] = 10in [16]: a
out[16]: [10, 1]
python 5個實用的技巧
下面我挑選出的這幾個技巧常常會被人們忽略,但它們在日常程式設計中能真正的給我們帶來不少幫助。1.字典推導 dictionary comprehensions 和集合推導 set comprehensions 大多數的python程式設計師都知道且使用過列表推導 list comprehensions...
基礎python5個例項運用
p int input 請輸入你的本金 r int input 請輸入利率 n int input 請輸入存的年份 amount p p 1 r nprint 本金利率和是 format amount import math r int input 請輸入球的半徑 area 4 math.pi r ...
python實用寶典 python 5個實用的技巧
下面我挑選出的這幾個技巧常常會被人們忽略,但它們在日常程式設計中能真正的給我們帶來不少幫助。1.字典推導 dictionary comprehensions 和集合推導 set comprehensions 大多數的python程式設計師都知道且使用過列表推導 list comprehensions...