Python
文章平均质量分 66
cleverwyq
没啥好说的
展开
-
Decorator in Python (1)
<br />def zhuang(F):<br /> print 'in zhuang... F = ', F<br /> def wraper(*args):<br /> F(args)<br /> print 'after zhuang...', wraper<br /> return wraper<br /> <br />@zhuang<br />def func(*args):<br /> print 'in func...', args<br /> <b原创 2011-01-06 16:13:00 · 585 阅读 · 0 评论 -
Python源码学习(四)-builtins模块的初始化
Module的初始化是从系统预定义的PyModuleDef开始的typedef struct PyModuleDef{ PyModuleDef_Base m_base; const char* m_name; const char* m_doc; Py_ssize_t m_size; PyMethodDef *m_methods; inquiry m_reload;原创 2013-09-28 15:13:02 · 6661 阅读 · 1 评论 -
Python源码学习之初始化(三)-PyDictObject的初始化
先来看它的定义typedef struct _dictobject PyDictObject;struct _dictobject { PyObject_HEAD Py_ssize_t ma_fill; /* # Active + # Dummy */ Py_ssize_t ma_used; /* # Active */ /* The table cont原创 2013-09-25 23:08:27 · 1740 阅读 · 0 评论 -
Python源码学习之初始化(二)
在初始化中,调用void_Py_ReadyTypes(void){ if (PyType_Ready(&PyType_Type) < 0) Py_FatalError("Can't initialize type type"); if (PyType_Ready(&_PyWeakref_RefType) < 0) Py_FatalError(原创 2013-09-22 22:38:20 · 3030 阅读 · 0 评论 -
Python源码学习七 .py文件的解释
Python源码太复杂了...今天看了下对.py文件的parse, 云里雾里的py文件是最简单的a = 10print(a)开始分析,堆栈如图把static node *parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret原创 2013-10-31 22:27:37 · 1429 阅读 · 0 评论 -
Python源码(八) testbit宏定义
在bitset.h中 ,有这样一个宏定义被广泛用到 testbit#define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0)#define BIT2BYTE(ibit) ((ibit) / BITSPERBYTE)#define BIT2SHIFT(ibit) ((ibit) % BITSP原创 2013-11-05 23:37:04 · 4317 阅读 · 0 评论 -
Python源码学习九,dfa state的初始化
in graminit.c定义了一些struct, 是理解和实现DFA的关键static dfa dfas[81] = { {256, //d_type "single_input", //char *d_name 0, //d_initial 3, //d_nstates states_0, //state *d_state原创 2013-11-10 12:21:44 · 1842 阅读 · 0 评论 -
Python源码学习十--token的parse
in parsetok.cstatic node * parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret, int *flags) 函数step1 . parser_state * ps = PyParser_New(g, start); --g is static gra原创 2013-11-10 12:45:17 · 3100 阅读 · 0 评论 -
Python源码学习 番外-为方便调试和查看变量而自己写的autoexp.dat
autoexp.dat位于C:\Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger 目录下,控制了Visual Studio中变量的调试时候的显示方式, 其中预定义了STL中许多类型的显示Python源码中,很多都是PyObject* 类型的变量, 查看起来非常不便,所以自己在autoexp.dat原创 2013-11-27 23:26:04 · 1667 阅读 · 0 评论 -
Python源码学习(六)-PyCodeObject初探
demo1.pydef f(): c=1 print("Hello")a=9b=5 f();co.pysource = open('demo1.py').read()co = compile(source, 'demo1.py', 'exec')print("type:")print(type(co))print("dir(co)")print(d原创 2013-10-10 23:33:01 · 2400 阅读 · 0 评论 -
Python源码之初始化(五)-initmain()
初始化执行到initmain()的时候PyImport_GetModuleDict() 返回的是interp->modules, 是一个dict包含了 sys, _codecs, builtins, zipimport等接着PyModule_New("__main__"), 创建一个__main__ module, 并在__main__ module的dict里面加入 __原创 2013-10-01 11:37:10 · 2919 阅读 · 0 评论 -
Python源码学习-PyTypeObject
重点学习下一个数据结构PyTypeObject PyType_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "type", /* tp_name */ sizeof(PyHeapTypeObject),原创 2013-09-21 13:49:57 · 2326 阅读 · 0 评论 -
Python里面的partial 函数
import functoolsdef add(a, b): return a + baddplus3 = functools.partial(add, 3)result = addplus3(7) # 10addplus3and9 = functools.partial(add, 3, 9)result = addplus3and9()原创 2013-08-22 10:30:23 · 4051 阅读 · 0 评论 -
Django-2
in url definition file, there always some text likeurlpatterns = patterns('', url(r'^archive/$', 'mysite.views.archive', {'blogid': 3}), url(r'^about/$', 'mysite.views.about', {'blogid': 3})原创 2013-08-27 16:50:06 · 842 阅读 · 0 评论 -
django-3
def wrapper(str1): def tell(str2): def tellagain(str3): return str1 +','+str2+','+str3+ ':'+ str1 return tellagain return tellprint(wrapper)print(wrapper('str1'原创 2013-08-28 22:03:58 · 671 阅读 · 0 评论 -
Django-1
runserver --noreload 启动的时候wsgi.py里面会用application = get_wsgi_application() 初始化这个全局变量, 其实只是return一个 WSGIHandler(), 这个变量会在后续的调用中到处引用到关于sqlall 命令, 只是打出create table的trace, 断点可以加在django\core\m原创 2013-08-18 14:41:09 · 633 阅读 · 0 评论 -
Django里面的RequestContext
c = RequestContext(request, { 'foo': 'bar', }) get_template('about.html').render(c)当我们定义一个RequestContext对象的时候,它的构造函数 __init__会调用 get_standard_processors(), 返回一个collect coll原创 2013-09-13 16:16:18 · 3346 阅读 · 0 评论 -
Django的TemplateResponse
def my_render_callback(response): return responsefrom django.template.response import TemplateResponsedef my_templateresponse(request): response = TemplateResponse(request, 'template.html', {})原创 2013-09-15 22:34:52 · 3832 阅读 · 0 评论 -
Django里面的自定义tag和filter
Django template里面高级用法tags filter 的解释学习原创 2013-09-15 11:39:41 · 4185 阅读 · 0 评论 -
Python源码入门学习心得-初始化(一)
有点杂...林乱记了几个点,以后整理,主要是一些基本的数据结构Build好python的源码以后,直接debug运行,python就对进入 main.cint Py_Main(int argc, wchar_t **argv)完成一系列的初始化操作.================================================PyObjec原创 2013-09-20 16:08:34 · 2633 阅读 · 0 评论 -
Python源码学习十一 一个常用的内存分配函数
void *_PyObject_DebugMallocApi(char id, size_t nbytes){ uchar *p; /* base address of malloc'ed block */ uchar *tail; /* p + 2*SST + nbytes == pointer to tail pad bytes */原创 2013-12-04 23:25:28 · 3189 阅读 · 0 评论