Python 5個極易混淆的核心概念!

2022-09-10 06:15:09 字數 1311 閱讀 4972

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...