在研究python的is 時的乙個小發現

2021-09-05 12:44:33 字數 1227 閱讀 1153

#在研究is的時候我有乙個顛覆我想象的發現

#我在查詢資料的時候發現實驗與理論上的結果不同,然後發現

#如果宣告乙個變數為乙個數字或者字串,與另乙個變數的內容相等,那麼這兩個變數歸為乙個位址

num = 1

lum = 1

print(num is lum) # =>true

#用id查詢位址

print(id(num), id(lum))# =>140704949384016 140704949384016

print()

#對其中乙個變數名重新賦值

num = num * 2

print(num is lum) # =>false

print(id(num), id(lum)) # =>140704949384048 140704949384016

#實驗結果不可思議,可以看到,原本兩個相同位址的變數,位址發生了改變

#數值不變的變數lum的位址不變,而數值改變的變數num被分配了乙個新的位址

#進一步**,現在改變lum的值,使其與num的值相同

print()

lum = lum * 2

print(num is lum) # =>true

print(id(num), id(lum))# =>140704949384048 140704949384048

#果不奇然,當lum的值與num相同時,lum的位址則改變為了num的位址,而原本lum的位址則不翼而飛

#這很神奇,不得不說,python在我們看不到的很多地方做了很多優化

#那麼誰主導這個位址呢,是lum?是num?還是單純是這個值呢?

print()

#我們繼續,首先重新宣告乙個變數

kum = 5

print(id(kum))# =>140704949384144

kum = 50

print(id(kum))# =>140704949385584

gum = 5

print(id(gum))# =>140704949384144

#可以發現,kum的值改變時,位址也隨之改變。

#當新宣告乙個變數,且變數等於先前的那個值的時候,這個新變數的位址又與之前那個完全相同了。

#那麼現在,我們可以認為是值主導這個位址了

#但在這個位址沒有變數名的時候,裡面是否還有這個值,我學疏才淺,不得而知。

希望有人能解答我最後乙個問題

Python 在機器學習時總結關於索引的乙個小細節

1.通過argsort函式發現的乙個細節 import numpy as data array 2,4,3,4 2,0,1,2 2,2,2,2 datasort data 1 argsort 0 data1 data data 1 argsort data2 data data 1 argsort ...

研究 termux 時遇到的詭異的問題

手上有個舊的android 手機 mi 5 plus閒置了兩年,效能還相當不錯的,就是螢幕被我摔花了,最近總想著讓他發揮點價值。突然想到能不能用它當小型linux伺服器放在家裡,用內網穿透工具 frp 將他的sshd 服務埠 的公網的伺服器上,這樣在外面就可以通過這台公網伺服器連線上這個 linux...

在C 中函式的研究

初學者往往會對函式這樣的問題比較的困惑,比如說 函式的引數方法以及函式的返回型別.對於這些問題如果沒有乙個系統了解,務必會是更深層次學習的乙個絆腳石.下面我就在c 中函式若干問題加以研究,希望各位學員能夠有深層次的了解.1.函式引數的傳遞方法.我們知道函式具體實現的時候需要從主調函式傳遞引數到被調函...