python
python
lxlmycsdnfree
脑科学爱好者,物理爱好者,计算机从业者
展开
-
Python解释器
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。CPython当我们从Python官转载 2017-08-30 19:35:03 · 229 阅读 · 0 评论 -
Python源码阅读-内存管理机制(二)
arenaarena: 多个pool聚合的结果arena sizepool的大小默认值位4KBarena的大小默认值256KB, 能放置 256/4=64 个poolobmalloc.c中代码1#define ARENA_SIZE转载 2017-11-25 14:02:35 · 328 阅读 · 0 评论 -
Python源码阅读-内存管理机制(一)
Python的内存管理架构基本分层在Objects/obmalloc.c源码中, 给了一个分层划分 _____ ______ ______ ________ [ int ] [ dict ] [ list ] ... [ string ] Python core |+3 | | | _________转载 2017-11-25 14:01:48 · 506 阅读 · 0 评论 -
Python垃圾回收机制
本文主要结合CPython源码分析一下Python的GC机制Python GC主要使用引用计数(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用问题,通过“分代回收”(generation collection)以空间换时间的方法提高垃圾回收效率。引用计数引用计数转载 2017-11-25 13:34:01 · 201 阅读 · 0 评论 -
谈谈 Python 程序的运行原理
1. 简单的例子先从一个简单的例子说起,包含了两个文件 foo.py 和 demo.py[foo.py]def add(a, b): return a + b[demo.py]import fooa = [1, 'python']a = 'a string'def func(): a = 1 b = 257 print(a转载 2017-11-24 22:25:24 · 313 阅读 · 0 评论 -
Python 2.6.2的字节码指令集一览
对Python的字节码指令集感兴趣但不知道从何下手么?执行这段代码就能看到字节码的列表: Python代码 import opcode for op in range(len(opcode.opname)): print('0x%.2X(%.3d): %s' % (op, op, opcode.opname[op])) 在Python 2转载 2017-12-02 12:28:41 · 3622 阅读 · 0 评论 -
深入解析Python中函数的参数与作用域
传递参数函数传递参数时的一些简要的关键点:参数的传递是通过自动将对象赋值给本地变量名来实现的。所有的参数实际上都是通过指针进行传递的,作为参数被传递的对象从来不自动拷贝。对于numbers,Strings,元祖这种不可改变值的类型,在函数内部的参数名的赋值不会影响调用者。原因就是这种类型会在改变值的时候,重新指向新地址,那么之前的对象执行地址值不会变,就等同于copy.(传递值就是转载 2017-11-21 19:23:42 · 1974 阅读 · 0 评论 -
图解 Python 深拷贝和浅拷贝
Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。下面本文就通过简单的例子介绍一下这些概念之间的差别。对象赋值直接看一段代码:Python1234567891011121314151617will = ["Will", 28转载 2017-11-20 15:12:19 · 204 阅读 · 0 评论 -
python的文件格式有两种,"*.py"和"*.pyw",它们有什么不同
严格来说,它们之间的不同就只有一个:视窗运行它们的时候调用不同的执行档案。视窗用 python.exe 运行 .py ,用 pythonw.exe 运行 .pyw 。这纯粹是因为安装视窗版 Python 时,扩展名 .py 自动被登记为用 python.exe 运行的文件,而 .pyw 则被登记为用 pythonw.exe 运行。.py 和 .pyw 之间的“其它差别”全都是 python.e原创 2017-11-11 18:27:44 · 2955 阅读 · 0 评论 -
python expected an indented block什么意思
1、不像其他语言(C++, java 等等),python的是用缩进来识别语法逻辑块的(i.e. if, while, for, def 等)。同一个if逻辑块下面的语句必须要有相同的缩进,否则python解析器怎么知道if块控制哪些语句?2、所谓缩进,就是每一行开头的空白。这个空白可以由多个空格或者制表符组成。python下面你怎么缩进都可以,比如3个空格,2个tab,这样都是合法的。但是同原创 2017-11-10 11:33:53 · 28410 阅读 · 0 评论 -
Python源码阅读-内存管理机制(三)
layer 2: PyObject_New/Del原创 2017-11-25 14:04:50 · 197 阅读 · 0 评论