《A Byte of Python》读书笔记一、概述

   获得人生中的成功需要的专注与坚持不懈多过天才与机会!!!

  以此为本系列的开头,共勉。

   第一章为概述,没什么具体内容可以讲,在看书的过程中有以下几个问题,记录一下,供自己参考,欢迎大家拍砖!

1、python特色之一为开源,可以读其源码,甚至可以修改。我认为要想真正掌握一门语言,需要读其源码,如unix源码分析之类的。   官网源码下载地址:http://ftp.python.org/ftp/python/   选中某个版本,进入之后,选择.tar.bz2 后缀的文件下载即可,如下图:

下载之后解压,即能看到源码了。具体源码分析,可以参见现在市面上有一本《python源码分析》该书作者博客:http://blog.csdn.net/balabalamerobert/article/details/567580。很牛的博客。

2、python特色中关于“高层语言”:无需考虑诸如如何管理你的程序使用的内存一类的底层细节。那么,python是如何管理内存的呢?

学习一门语言前,肯定是先学习这门语言的变量。要想深入了解这门语言,变量在内存中的管理尤其重要。
Python中变量的定义和声明是很随意的,你可以在任何你想要开始使用变量的时候去定义吧,这和C有区别。而且声明变量的时候无需指定变量类型,它的类 型会在变量赋值的时候由Python内部的解释器确定。注意,Python变量也需要遵循先创建赋值之后才可以使用的原则。

作为一个优秀的程序,相信我们一定会仔细研究一门语言的变量在内存中是如何管理的,是否需要我们手动释放内存?很幸运的是,Python解释器已经帮我们解决了这个复杂的问题。那它是怎么做的什么时候回收那些对象呢?

Python引入了一个机制:引用计数。引用计数的意思就是说Python内部记录了对象有多少个引用。

引用计数增加情况

比如下面的语句:
x=4
y=x
变量x被创建赋值为4的时候,该对象的引用计数为1。当执行y=x语句的时候,变量y指向了跟变量x同一个对象,这时该对象的引用计数变成了2。

总结一下对象会在一下情况下引用计数加1:

1.对象被创建:x=4

2.另外的别人被创建:y=x

3.被作为参数传递给函数:foo(x)

4.作为容器对象的一个元素:a=[1,x,'33']

引用计数减少情况

1.一个本地引用离开了它的作用域。比如上面的foo(x)函数结束时,x指向的对象引用减1。

2.对象的别名被显式的销毁:del x ;或者del y

3.对象的一个别名被赋值给其他对象:x=789

4.对象从一个窗口对象中移除:myList.remove(x)

5.窗口对象本身被销毁:del myList,或者窗口对象本身离开了作用域。

垃圾回收

当内存中有不再使用的部分时,垃圾收集器就会把他们清理掉。它会去检查那些引用计数为0的对象,然后清除其在内存的空间。当然除了引用计数为0的会被清除,还有一种情况也会被垃圾收集器清掉:当两个对象相互引用时,他们本身其他的引用已经为0了。


 

3、python特色之可移植性:python多平台移植性跟java的跨平台有何区别?

python同一个版本号的pyc,pyo也是跨平台的。 当然不能从PC跨到手机上。也不能从intel跨到arm上,不能从64位跨到32位上。
 
java老实说跨平台的能力也一样受限制,有各种各样的陷阱,有时候跨平台的代码也不能使用。不过相对要比python好些。j2me除外。
 
java作为工程语言,它做一些中大型项目的能力是远超过python的。不过python做中小型项目的开发速度,也是远远不是java能够比拟的。
 
通常java的速度比python快些。python调用C扩展除外。
 
在跨平台方面,java跨平台好象大家都觉着理所当然。所以当python跨平台时,往往会给你惊喜。大约就是这样。
-------------------------------
python是跨平台的,和java 相似,主要是源码跨平台,编译之后不一定能跨。java要装虚拟机,python要装编译运行环境。跨平台都是有限的,1.不能有windows特殊的东西,2.编码方式要兼容。python 比java简单。 
 java跨平台原理,可以参见我的博客:http://blog.csdn.net/zhanglvmeng/article/details/11178453


 

4、python特色之解释性:Python语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这一点跟java非常像。具体可参见我的下一篇博客:python解释执行原理

本文引用:

[1] python内存管理:http://www.pythonfan.org/blog-4553-1628.html

[2] python 解释执行原理:http://blog.csdn.net/zhanglvmeng/article/details/11178719

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值