為什麼Python有相同的不可變物件id不同

2023-02-01 16:55:03 字數 2164 閱讀 7791

1樓:匿名使用者

這就涉及到python的記憶體管理機制了,python裡面,所有變數都是物件,資料在記憶體中佔用物理記憶體,然後指標的頭指向不同的物件,就好比兩台相同的電腦,編號卻不一樣,這其實是兩個物件;但是也不是所有物件都是這樣處理的,為了節省記憶體,對於小的整數和短的字串,python在處理的時候會把相同的資料指向不同的物件,但它們的id是一樣的。

2樓:霞左丞永

這就涉及到python的記憶體管理機制了,python裡面,所有變數都是物件,資料在記憶體中佔用物理記憶體,然後指標的頭指向不同的物件,就好比兩台相同的電腦,編號卻不一樣,這其實是兩個物件;但是也不是所有物件都是這樣處理的,為了節省記憶體,對於小的整數和短的字串,python在處理的時候會把相同的資料指向不同的物件,但它們的id是一樣的。

python 裡的可變物件與不可變物件具體怎麼理解

3樓:琳姞家菲

python的資料型別分為可變(mutable)與不可變(immutable)。不可變型別包含字串(str),整數(int),元組(tuple);可變型別包含列表(list),字典。

專(dict)。

是否為可變型別在於記憶體單元的值是否可以被改變。屬如果是記憶體單元的值不可改變的,在對物件本身操作的時候,必須在記憶體的另外地方再申請一塊記憶體單元(因為老的記憶體單元不可變),老的記憶體單元就丟棄了(如果還有其他ref,則ref數字減1,類似unix下的hard-link);如果是可變的,對物件操作的時候,不需要再在其他地方申請記憶體,只需要在此物件後面連續申請(+/即可,也就是它的位址會保持不變,但區域會變長或者變短。

4樓:匿名使用者

python裡一切都是物件。

所以1,2,3,4...這些整數也都是物件。這些基本的不可變物件在python裡會被頻繁的引用,建立,如果不找到好的辦法的話很容易讓python引發效率瓶頸,所以python引入了整數物件池的機制。

python不同程序的類的例項id為什麼一樣的

5樓:譙冷

可以把類當做引數傳入到函式裡,在函式裡進行例項化。如下所示。把類a當做引數傳入get_instance_from_class。

在get_instance_from_class中對a進行例項化,獲得其實例,並返回。12345678910111213class a: def __init__(self):

print "i am a a instance." def print_myself(self): print "print myself.

"def main():def get_instance_from_class(a): return a() a = get_instance_from_class(a) a.

print_myself() if __name__=main__"main()

python中,如何求相同id(有好幾行)下不同變數的均值,每個id的都需要求出來。如圖

6樓:丨洛神殤丨

如果你這是csv檔案的話,直接按照普通檔案讀進來,將你的每一行用split(",分割,你的id列在第二列,注意需要去掉每行末尾的回車換行。 按照id構造乙個字典。大概長這樣:,"2":.

}然後遍歷這個字典,求每項均值就行了。**不寫,留著你自己聯絡。

python中判斷物件是否相同是不是判斷記憶體id?

7樓:愛笑的柯南推理

你好,好高興為你答疑。**如下: #include #include #define n 100 int huiwen(char *s,int n) else return huiwen(s+1,n-2); else return 0; }void main() 編寫程式不易,還望採納鼓勵。

有問題可以追問。 你的採納是我最大的動力。^_

python 不變物件和可變物件的問題!

8樓:匿名使用者

c = count()#例項化的時候本身就是0

m(c, n)#呼叫方法的時候 c=count(5)是例項化另乙個變數,m方法裡面的是方法裡面的n=3和main方法裡面的n=1是兩個不同的變數。

所以,在你的**裡m函式對main函式沒什麼用。

為什麼python中字串和整數不可變

ython建立的每乙個變數都是乙個物件,python會管理變數的生命週期。一次新的賦值,將建立乙個新 內的對容象,即使檔名相同,變數的標識也不相同。例如 x a print id a x a print id a 你會看出兩者的內部標識並不相 從此處不難理解 字串是不可變的。字串的方法,只是新建的乙...

python小程式為什麼出錯,Python小程式出錯

syntaxerror name x is parameter and global x是引數 x 1 def fun global x x 2 fun print x global 語句用以宣告 x 是乙個全域性變數 因此,當我們在函式中為 x 進行賦值時,這 一改動將影響到我們在主 塊中使用的 ...

人為什麼會做相同的夢,為什麼會做相同的夢?

環境的原因你仔細想在你做這夢的時候的前後比較長的一段時間 每次的這個時間段你的的生活絕對是基本一樣的吧 我以前也老做同乙個夢,就是夢見一女的從我身邊打著雨傘過去,然後我身邊的一大堆石頭會象心臟跳動。現在出來蕩就再沒做過了首先你要弄清楚夢與人的關係,人的大腦一天內形成的思維,足可以寫一部20萬字的記錄...