python中的變量如何開辟內(nèi)存
python下的變量
不需要預(yù)先聲明變量的類型,變量的類型和值在賦值的那一刻被初始化(聲明和定義的過(guò)程一起完成)
在python中, 每一個(gè)變量在內(nèi)存中創(chuàng)建,我們可以通過(guò)變量來(lái)查看內(nèi)存中的值
哈哈,這里是不是很熟悉,跟c中的指針一樣?。ㄔL問(wèn)內(nèi)存中的值)
首先大家需要了解一點(diǎn):在python中:
x =5之后,我們要了解它的過(guò)程:系統(tǒng)先是找了一塊內(nèi)存,將5存儲(chǔ)了進(jìn)去,緊接著x指向了當(dāng)前的這塊內(nèi)存
預(yù)測(cè)1:python下的變量是一個(gè)指針
>>> 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
說(shuō)明x指向了內(nèi)存中存儲(chǔ)為4的那個(gè)地址,那個(gè)地址是10413988
y = 5
說(shuō)明y指向了內(nèi)存中存儲(chǔ)為5的那個(gè)地址,那個(gè)地址是10413976
也就是說(shuō)在執(zhí)行x = 4,y = 5之后,x,y分別指向了不同的地址,當(dāng)執(zhí)行 x = y之后:
也就是說(shuō),x指向了y所指向的內(nèi)存了,這里我們知道,它們都指向同一塊內(nèi)存
哈哈,原來(lái)跟c里面的指針真的一樣哎?。。」?/p>
(但是,但是,但是:就這些嗎??)
>>> x = 4 >>> print x 4 >>> id(x) 10413988 >>> x = 5 >>> print x 5 >>> id(x) 10413976 >>>
好,我們大家接著看:
也就是說(shuō):開始的時(shí)候,x指向了10413988這塊內(nèi)存,里面存儲(chǔ)的是4
當(dāng)執(zhí)行了x = 5之后,也就變成了這樣:
好,ok就是這樣了,
不知道大家注意到了嗎?
在python中,一開始初始化存儲(chǔ)在內(nèi)存的東西是不可以更改的,我們所能更改的只是它的指向,
但是,但是,在c中,對(duì)于int x= 4; 也就是說(shuō)x的地址是定的,里面存儲(chǔ)的東西可以更改
#include <stdio.h> int main(){ int x = 4; printf("%p %d\n", &x, x); x = 5; printf("%p %d\n", &x, x); return 0; }
我們大家再看一下運(yùn)行結(jié)果:
從上面可以看到,地址并沒(méi)有變,好了,這一點(diǎn),python和c的區(qū)別較大,希望大家注意。
二: 內(nèi)存大小
我們來(lái)看一下這樣的代碼:
>>> x = 6 >>> id(x) 10413964 >>> y = 7 >>> id(y) 10413952 >>> z = 8 >>> id(z) 10413940 >>>
從上面的程序中,我們知道系統(tǒng)給分配的地址分別是:
10413964 10413952 10413940
所以我們大膽推測(cè),python中應(yīng)該給這些整數(shù)的字節(jié)有可能就是12(哈哈,純屬個(gè)人推測(cè))
有可能內(nèi)存中就是這樣了的:
哈哈,也該就是這樣子了, 至于其他的大小,有興趣的朋友可以研究研究
三:python內(nèi)存
是不是說(shuō):在python中,系統(tǒng)將每一個(gè)值都放在了一個(gè)固定的位置,不然為什么,每一次探究?jī)?nèi)存地址的時(shí)候,結(jié)果都是一樣的(數(shù)值相等,地址也相等)
>>> x = 4 >>> y = 5 >>> id(x) 10413988 >>> id(y) 10413976 >>>
假如系統(tǒng)為4分配了一塊內(nèi)存,遵循某種規(guī)則(類似于c里面的內(nèi)存對(duì)齊),那么接下來(lái)為5分配了另一塊內(nèi)存,權(quán)且分配到了10413976
那么下面這個(gè)如何解釋:
>>> x = 4 >>> y = 6 >>> id(x) 10413988 >>> id(y) 10413964 >>>
假如遵循某種規(guī)則的話,應(yīng)該是6也分配到了10413976去了,可是,他被分配到了10413964
我們?cè)賮?lái)看:
>>> x = 4 >>> y = 6 >>> id(x) 10413988 >>> id(y) 10413964 >>> z = 5 >>> id(z) 10413976 >>>
這,哈哈,應(yīng)該就是這樣的了的吧?。。。?/p>
也就是說(shuō):python中,系統(tǒng)還是python本身為其分配內(nèi)存的時(shí)候就已經(jīng)根據(jù)這個(gè)值是多少,確定了內(nèi)存的位置了。。。
以上這篇python中的變量如何開辟內(nèi)存就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python?http.server模塊共享文件的方法詳解
大家好,今天給大家介紹一下Python標(biāo)準(zhǔn)庫(kù)中的http.server模塊,這個(gè)模塊提供了一種簡(jiǎn)單的方式來(lái)快速啟動(dòng)一個(gè)HTTP服務(wù)器,文中給大家介紹了使用Python?http.server模塊共享文件的方法,需要的朋友可以參考下2024-05-05

Python基礎(chǔ)練習(xí)之用戶登錄實(shí)現(xiàn)代碼分享

Pycharm配置遠(yuǎn)程SSH服務(wù)器實(shí)現(xiàn)(切換不同虛擬環(huán)境)

python中將字典形式的數(shù)據(jù)循環(huán)插入Excel

python 讀取數(shù)據(jù)庫(kù)并繪圖的實(shí)例

python3.6 tkinter實(shí)現(xiàn)屏保小程序