相信學過c的人,對變數和記憶體了解的差不多,明白了變數的型別(int, float , double),知道列它們所佔記憶體的大小可是,python中他們是一樣的嗎???
no,no, no 它們並不一樣(儘管說,python就是用c寫的)
不需要預先宣告變數的型別,變數的型別和值在賦值的那一刻被初始化(宣告和定義的過程一起完成)
在python中, 每乙個變數在記憶體中建立,我們可以通過變數來檢視記憶體中的值
哈哈,這裡是不是很熟悉,跟c中的指標一樣啊(訪問記憶體中的值)
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
>>>
y = 5 說明y指向了記憶體中儲存為5的那個位址,那個位址是10413976
也就是說在執行x = 4,y = 5之後,x,y分別指向了不同的位址,
當執行 x = y之後:
也就是說,x指向了y所指向的記憶體了,這裡我們知道,它們都指向同一塊記憶體
哈哈,原來跟c裡面的指標真的一樣哎!!!哈哈哈
(但是,但是,但是 :就這些嗎??)
也就是說:開始的時候,x指向了10413988這塊記憶體,裡面儲存的是4
當執行了x = 5之後,也就變成了這樣:
好,ok就是這樣了,
不知道大家注意到了嗎?
在python中,一開始初始化儲存在記憶體的東西是不可以更改的,我們所能更改的只是它的指向,
但是,但是,在c中,對於int x= 4; 也就是說x的位址是定的,裡面儲存的東西可以更改
我們來看一下這樣的**:
>>> x = 6
>>> id(x)
10413964
>>> y = 7
>>> id(y)
10413952
>>> z = 8
>>> id(z)
10413940
>>>
所以我們大膽推測,python中應該給這些整數的位元組有可能就是12(哈哈,純屬個人推測)
有可能記憶體中就是這樣了的:
哈哈,也該就是這樣子了,
至於其他的大小,有興趣的朋友可以研究研究
是不是說:在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中,系統還是python本身為其分配記憶體的時候就已經根據這個值是多少,確定了記憶體的位置了。。。
**:
總體簡單介紹下python使用 python02
usr bin python coding utf 8 import sys import random 隨機數的產生 num1 random.randrange 1,100,2 print num1 現在隨機產生100個隨機數 arr total 0 for i in range 100 num ...
python codec 深入理解Python特性
第1章 簡介 1 1.1 什麼是python技巧 1 1.2 本書作用 2 1.3 如何閱讀本書 2 第2章 python整潔之道 4 2.1 用斷言加一層保險 4 2.1.1 示例 python中的斷言 4 2.1.2 為什麼不用普通的異常來處理 6 2.1.4 常見陷阱 6 2.1.5 pyth...
初識python,編寫乙個簡單的python程式
在ubuntu下安裝好了最新的python3.9,開啟學習python之旅。在命令列輸入python進入互動模式 互動模式下,你每輸入一行 python直譯器就將這一行 轉換成機器碼來執行。例如 互動模式輸入100 200,然後回車 直接會顯示執行結果300 但是這樣的 是沒有儲存的,如果下次我們還...