终于把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中,没有变量,只有指针,要说变量,也是指针变量。
啦啦啦啦啦啦啦啦啦啦……