您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎么在python中為變量開辟內存,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
首先大家需要了解一點:在python中:
x =5之后,我們要了解它的過程:系統先是找了一塊內存,將5存儲了進去,緊接著x指向了當前的這塊內存
預測1:python下的變量是一個指針
>>> x = 4 >>> y = 5 >>> print x 4 >>> print y 5 >>> id(x) 10413988 >>> id(y) 10413976 >>> x = y >>> id(x) 10413976 >>> id(y) 10413976 >>>
從上面我們可以看到:
x = 4
說明x指向了內存中存儲為4的那個地址,那個地址是10413988
y = 5
說明y指向了內存中存儲為5的那個地址,那個地址是10413976
也就是說在執行x = 4,y = 5之后,x,y分別指向了不同的地址,當執行 x = y之后:
也就是說,x指向了y所指向的內存了,這里我們知道,它們都指向同一塊內存
哈哈,原來跟c里面的指針真的一樣哎!!!哈哈哈
(但是,但是,但是:就這些嗎??)
>>> x = 4 >>> print x 4 >>> id(x) 10413988 >>> x = 5 >>> print x 5 >>> id(x) 10413976 >>>
好,我們大家接著看:
也就是說:開始的時候,x指向了10413988這塊內存,里面存儲的是4
當執行了x = 5之后,也就變成了這樣:
好,ok就是這樣了,
不知道大家注意到了嗎?
在python中,一開始初始化存儲在內存的東西是不可以更改的,我們所能更改的只是它的指向,
但是,但是,在c中,對于int x= 4; 也就是說x的地址是定的,里面存儲的東西可以更改
#include <stdio.h> int main(){ int x = 4; printf("%p %d\n", &x, x); x = 5; printf("%p %d\n", &x, x); return 0; }
我們大家再看一下運行結果:
從上面可以看到,地址并沒有變,好了,這一點,python和c的區別較大,希望大家注意。
二: 內存大小
我們來看一下這樣的代碼:
>>> x = 6 >>> id(x) 10413964 >>> y = 7 >>> id(y) 10413952 >>> z = 8 >>> id(z) 10413940 >>>
從上面的程序中,我們知道系統給分配的地址分別是:
10413964 10413952 10413940
所以我們大膽推測,python中應該給這些整數的字節有可能就是12(哈哈,純屬個人推測)
有可能內存中就是這樣了的:
哈哈,也該就是這樣子了, 至于其他的大小,有興趣的朋友可以研究研究
三:python內存
是不是說:在python中,系統將每一個值都放在了一個固定的位置,不然為什么,每一次探究內存地址的時候,結果都是一樣的(數值相等,地址也相等)
>>> x = 4 >>> y = 5 >>> id(x) 10413988 >>> id(y) 10413976 >>>
假如系統為4分配了一塊內存,遵循某種規則(類似于c里面的內存對齊),那么接下來為5分配了另一塊內存,權且分配到了10413976
那么下面這個如何解釋:
>>> x = 4 >>> y = 6 >>> id(x) 10413988 >>> id(y) 10413964 >>>
假如遵循某種規則的話,應該是6也分配到了10413976去了,可是,他被分配到了10413964
我們再來看:
>>> x = 4 >>> y = 6 >>> id(x) 10413988 >>> id(y) 10413964 >>> z = 5 >>> id(z) 10413976 >>>
以上就是怎么在python中為變量開辟內存,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。