1. 程式人生 > >一切都是物件,一切都是指標

一切都是物件,一切都是指標

終於把1000多頁的python學習手冊啃完了。從來沒有從深層次上去理解一門程式語言,學習c是如此,學習java也是如此。總覺得這些語言就是拿來用的。不用管它為什麼要創造出來。

這幾天認真系統的學習了python語言,泯泯之中和python的作者有點神交。

我的感受:

說python起源於c,一點都不過分。而且,處處是指標,處處是物件。不得不佩服作者的創造力,自己曾經也被c語言的指標整的焦頭爛額。能不用就不不碰,那記憶體崩潰是剛剛的。沒想象,python的作者把c語言的指標整這麼溜,甚至發展成為一門程式語言,還整合在各種Linux系統中。

現在發現,不能用c語言的思路去理解python語言了。網上很多c#和python的比較,但是我要說的是,這兩種語言設計思路從最核心,最底層的解決思路是不一樣的。c#更像java。而python更像c。

看看,a =5 在c中是非常普通的賦值,我們也通常把這個語句叫做賦值語句,但是在python中,這樣的理解就錯了。

我們分別查一下他們的記憶體地址,發現地址是一樣的,原來python把這語句看做是物件例項化的語句。就是把一個整數物件例項化變數為a,如果用c來寫的話,要 寫成:

a= new 5()

是不是很奇怪,一個類,或者物件是不可以用數字來命名的,但是作為物件例項化,或者類的例項化,問題就很好理解了。

可以a = 5,頁可以 a='aaa'等。而且這個時候,原來的a的地址回收了。這裡的a又重新指向字串的地址了。

說白了,並不是定義了一個變數,而是定義了一個指標:

c:  *a = 5

總而言之:python把一切資料,一切的一切都看作物件,在python中,沒有變數,只有指標,要說變數,也是指標變數。

啦啦啦啦啦啦啦啦啦啦……