Python notes.

 

 

2014-8-5

QQ截图20140805091356

上面这个例子出自《Think Python》 http://www.greenteapress.com/thinkpython/thinkpython.pdf

变量zipcode赋值为02492时候出现了扑朔迷离的错误(confusing error)。。。为什么会这样呢?

赋值为02132的时候不会报错,但下一次引用的时候值显示为1114!!

其实这是因为数字0开头的时候,被系统判定为8进制了。因为8进制数字只包含0-7,所以第一个02492报错了,第二个02132不会。

>>> zipcode = 02492
File “<stdin>”, line 1
zipcode = 02492
^
SyntaxError: invalid token
>>> zipcode = 02132
>>> zipcode
1114
>>> zipcode = 025
>>> zipcode
21
>>> zipcode = 031
>>> zipcode
25                                                 #这就是著名的oct(31)=dec(25)啊,哈哈哈蛤。
>>> zipcode = 0801
File “<stdin>”, line 1
zipcode = 0801
^
SyntaxError: invalid token

 

2014-9-11

Python是一门解释型语言,当我们输入代码,保存,然后运行得到结果或报错。这一切看起来很简单,但是对于Pyhton本身,还有一些别的步骤.

当Python开始运行,代码开始被处理之前,Python还会执行一些步骤,现将其编译为“字节码”然后转发到“Python虚拟机”(PVM)中去。

字节码,是源代码底层的、与平台无关的形式。提高执行速度(相比文本类型的源码)。

如果Python进程拥有写入权限,那么就会把字节码保存为一个.pyc结尾的文件。比如script.py的字节码就是script.pyc。它们在同一目录下。

如果没有写入权限,字节码会被保存在内存中直到执行完毕,然后丢弃。

 

python虚拟机(PVM)

字节码编译成型,或者从已有的pyc文件载入后,会被放入PVM执行。

PVM其实是迭代运行字节码指令的一个大循环,一个接一个地完成操作。PVM是python的运行引擎,它时常表现为Python系统的一部分,并且它是实际运行脚本的组件。从技术上来说,它才是所谓“Python解释器“的最后一步。

看个图吧。

QQ截图20140911142325

 

 

 

Proudly powered by WordPress | Theme: Code Blog by Crimson Themes.