關於python中的賦值變數的問題

時間 2023-03-08 04:35:08

1樓:一豬之哀傷一

是指向同一個記憶體地址的,python的賦值是隻是把變數的記憶體地址賦值給另一個變數,這一點可以使用python的內建方法id()來進行測試,對於你給的例子:

我們假設'qh'這個字串在記憶體中的地址是a,'ljq'在記憶體中的地址是b

you='qh' #讓you變數指向a地址。

me=you #讓me變數和you變數一樣指向a地址。

you='ljq' #修改you變數,讓它指向到b地址。

print you #可想而知you指向的是b地址,所以它的值為'ljq'

print me #me指向的是a地址,所以它的值為'qh'

輸出:ljq

qh可以使用id來加強對python的賦值機制的理解。

>>>a = asdf'

>>>id(a)

>>>b = a

>>>id(b)

>>>a = haha'

>>>id(a)

>>>id(b)

>>>a

'haha'

>>>b

'asdf'

2樓:匿名使用者

指向同一個記憶體地址。 但是即使是這樣說,實際上還是有兩種不同的理解。

python變數分兩種 mutable immutable, 就是可變和不可變的意思。

數字,字串 tuple (就是「()這種形式的陣列), 這種資料型別是不可變的, 因此。

你以上的程式的含義是 you 指向 'qh', me指向you指向的內容, 所以me 就指向了'qh', 然後 you指向'ljq', 這裡是you本身的值變了, 而不是you指向的物件的值變了。

you=[1]

me=you

print you

print me輸出。

這裡, 你看到 , 這其實是you指向的 [1]物件進行了append()操作,因此是該物件本身發生了變化(以及其他大部分資料型別都是可變資料型別), 因此 me 和 you都指向同一個物件, 輸出自然就是相同的。

3樓:匿名使用者

同一個地址,類似於actionscript3, python中的字串是不變物件,不允許對其中的字元按下標修改。當為某個字串變數賦新的字串值時,僅僅是更改這個變數指向的地址。

python 變數賦值的入門問題

4樓:

先解釋第三行中中括號。

python的語法裡面,中括號可以表示 就表示 t 這個 list 的第一項。

再解釋 int 和 list 變數賦值的問題。

第三行中,l=t[1],意思就是給 t 這個 list 的第一項起了個別名叫做 l。

這就好比給張三起了個名字叫小明,下文裡不論提到張三還是小明,說的都是同一個人。

那麼在第四行裡 l[0]='d' 其實就等價於 t[1][0] =d',相當於改變了list的內容。

這在程式設計裡叫做aliasing,python 的 list 都是有aliasing的,但是 int (整數)沒有。

所以,在第二段中,把 x 放到 m 這個 list 裡的時候,只是拷貝進去了一個數值,從此以後和 x 不再有關聯了。 這就好比做了個張三的克隆人,那個克隆人後來怎樣,跟張三都沒什麼關係了。

第15-18行也是一樣的道理。

如果,把那幾行改為a=[4]; b=a; b[0]=5; print a; 這時就會打出5來了。

綜上所述,造成第一段和第二段區別的主要原因就是它們涉及的資料型別不同,list = 起別名, int =克隆人。

關於Python中sort函式賦值的問題

python中的sort 方法用於陣列排序,本文以例項形式對此加以詳細說明 一 基本形式 列表有自己的sort方法,其對列表進行原址排序,既然是原址排序,那顯然元組不可能擁有這種方法,因為元組是不可修改的。123x 4,6,2,1,7,9 x.sort print x 1,2,4,6,7,9 如果需...

r語言將變數中的缺失值賦值怎麼寫

1 定義一個變數m,並使用函式c 進行對變數m賦值,使用的是 如下圖所示。2 可以不使用函式,直接使用 進行賦值。3 也可以倒過來賦值,將變數放在函式後面,還是使用 賦值。4 可以使用assign對變數進行賦值,前面引數是被賦值的變數,後面是需要的物件。5 定義一個變數w,使用函式c 進行賦值 定義...

C使用了未賦值的區域性變數,如何賦值

對於string型別的變數,最好的初始賦值是string name1 null string name2 null 而判斷是否賦值最好是用 if name1.length 1 判斷,之後再輸出比較好 快樂王 console.writeline 第二個學員的姓名 0 年齡歲 name2,age2 這句...