[python-chinese] 最近在研究python源码,有个问题搞不明白,求教!
Robert Chen
search.pythoner在gmail.com
星期三 十一月 29 16:41:51 HKT 2006
ºÇºÇÐǪ̈¿ÍÆøÁË£¬Ô´ÂëÆÊÎöϵÁÐÍ£ÁËÏÂÀ´ÔÒòÓÐ¶à·½Ãæ£¬ºÇºÇ²»¹ýÖ÷Òª»¹ÊÇ×Ô¼º±È½ÏÀÁ£¬¹ý¶Îʱ¼ä×¼±¸ÖØÐ¿ªÊ¼·¢²¼£¬½«Ä¿Ç°ÎªÖ¹ËùÓеķÖÎö½á¹û¹²Ïí³öÀ´¡£
²»¹ýºÜ³¤Ò»¶Îʱ¼äûÓп´PythonµÄÔ´ÂëÁË£¬ÒÔǰ·ÖÎöµÄ½á¹ûÒ²ÍüµÃ²î²»¶àÁË£¬ÄãµÄÎÊÌâÎÒ»¹Õæ²»ºÃ»Ø´ð£¬±§Ç¸¡£²»¹ý»¹ºÃµ±Ê±¼Ç¼ÓÐÎĵµ£¬ÕùÈ¡¹ý¶Îʱ¼ä¾Í°ÑËüÃÇshare³öÀ´£¬¾ÍÏñÏÖÔÚµÄDjango
BookÒ»ÑùºÇºÇ¡£µ½Ê±ºòÏ£ÍûºÍÐǪ̈¶à¶àÌÖÂÛ £º£©
On 11/29/06, libing <imlibing在163.com> wrote:
>
> ÖÕÓڵȵ½´óÏÀµÄ»ØÐÅÁË£¬´óÏÀµÄcpythonÔ´ÂëÆÊÎöϵÁÐÔõô¾ÍÍ£ÁËÄØ?ÎÒ»¹µÈ×ŰݶÁÄØ¡£
>
>
> ÄÇô»¹ÓиöÎÊÌ⣺һ¶ÎÄÚ²ã´úÂëÀïÃæµÄlocalµÄ±äÁ¿µÄ´æ´¢¶àÓÃSTORE_FASTºÍLOAD_FASTÖ±½Ó´æÔÚframeÉÏ£¬ÎªÊ²Ã´»¹Òª·ÑʼӸölocal²ÎÊý´«½øÀ´Ò»¸ö±íÄØ£¿
> ʲôÇé¿öÏ»áרÃÅ´«½øÀ´Ò»¸ölocal±í£¿
>
> ----- Original Message -----
> *From:* Robert Chen <search.pythoner在gmail.com>
> *To:* python-chinese在lists.python.cn
> *Sent:* Wednesday, November 29, 2006 3:53 PM
> *Subject:* Re: [python-chinese]×î½üÔÚÑо¿pythonÔ´Â룬ÓиöÎÊÌâ¸ã²»Ã÷°×£¬Çó½Ì£¡
>
> ºÇºÇ£¬ÔÒòºÜ¼òµ¥£¬ÔÚfooÖ®ÍâµÄframeÖУ¬localºÍglobalÊÇͬһ¸ödict¡£
> x = 1
> def foo():
> print '================= local %d =================\n' % id(locals()),
> locals()
> print '================= global %d =================\n' %
> id(globals()), globals()
> y = x+1
> print x
> print y
>
> print '================= local %d =================\n' % id(locals()),
> locals()
> print '================= global %d =================\n' % id(globals()),
> globals()
> foo()
> print x
>
> ´ÓÊä³öµÄ½á¹ûÖпÉÒÔ¿´µ½ÕâÒ»µã£¬ËùÒÔfooÖ®ÍâÏòlocalÖÐÉèÖÃÖµ¾ÍÊÇÏòglobalÖÐÉèÖÃÖµ¡£
>
> On 11/29/06, libing <imlibing在163.com> wrote:
> >
> > 3 0 LOAD_GLOBAL 0 (x)
> > ÕâÌõÊÇfoo´ÓglobalÀï²éxµÄ£¬globalÓÖÊÇ´ÓfooÍâÃæ´«½øÀ´µÄ£¬µ«ÊÇÎÊÌâÊÇÔÚfooÍâÃæÃ»Óп´µ½ÍùglobalÉèxÖµµÄ´úÂ룬ÓеÄÖ»ÊÇ
> > 3 STORE_NAME 0 (x)
> > ÕâÌõ£¬ÕâÊÇÍùfooÍâÃæµÄlocal²åÊý¾ÝµÄ
> >
> > ----- Original Message -----
> > *From:* ÁõöÎ <march.liu在gmail.com>
> > *To:* python-chinese在lists.python.cn
> > *Sent:* Wednesday, November 29, 2006 11:03 AM
> > *Subject:* Re: [python-chinese]×î½üÔÚÑо¿pythonÔ´Â룬ÓиöÎÊÌâ¸ã²»Ã÷°×£¬Çó½Ì£¡
> >
> > Ó¦¸ÃÊÇÕâÌõ
> > 3 0 LOAD_GLOBAL 0 (x)
> > ÎÒ²ÂÏëÊǽâÊÍÆ÷±àÒëfooµÄʱºò£¬ÔÚfooÄÚ²¿ÕÒ²»µ½xµÄ¸³Öµ£¬¾ÍÖ±½ÓÔÚ×îÇ°Ãæ²åÈëÁËÕâ¸öÖ¸Áî¡£
> >
> > 2006/11/29, libing <imlibing在163.com>:
> > >
> > > hello,´ó¼ÒºÃ£¬Ð¡µÜ×î½üÔÚÑо¿pythonÔ´Â룬ÓиöÎÊÌâ¸ã²»Ã÷°×£¬Çó½Ì£¡
> > >
> > > ¶ÔÒ»¶Î´úÂ룺
> > > x = 1
> > > def foo():
> > > y = x+1
> > > print x
> > > print y
> > > foo()
> > > print x
> > >
> > > ÎÒ´òÓ¡³öËüµÄcode object ½á¹¹³öÀ´·ÖÎö£º
> > > £½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½
> > > co_names : ('x', 'foo')
> > > co_varnames : ()
> > > co_freevars : ()
> > > co_cellvars : ()
> > > 1 0 LOAD_CONST 0 (1)
> > > 3 STORE_NAME 0 (x)
> > >
> > > 2 6 LOAD_CONST 1 (<code object foo at
> > > 010167B8, file "string", line 2>)
> > >
> > > nest code object begin <<<<<
> > > co_names : ('x',)
> > > co_varnames : ('y',)
> > > co_freevars : ()
> > > co_cellvars : ()
> > > 3 0 LOAD_GLOBAL 0 (x)
> > > 3 LOAD_CONST 1 (1)
> > > 6 BINARY_ADD
> > > 7 STORE_FAST 0 (y)
> > >
> > > 4 10 LOAD_GLOBAL 0 (x)
> > > 13 PRINT_ITEM
> > > 14 PRINT_NEWLINE
> > >
> > > 5 15 LOAD_FAST 0 (y)
> > > 18 PRINT_ITEM
> > > 19 PRINT_NEWLINE
> > > 20 LOAD_CONST 0 (None)
> > > 23 RETURN_VALUE
> > > nest code object end >>>>>
> > >
> > > 9 MAKE_FUNCTION 0
> > > 12 STORE_NAME 1 (foo)
> > >
> > > 6 15 LOAD_NAME 1 (foo)
> > > 18 CALL_FUNCTION 0
> > > 21 POP_TOP
> > >
> > > 7 22 LOAD_NAME 0 (x)
> > > 25 PRINT_ITEM
> > > 26 PRINT_NEWLINE
> > > 27 LOAD_CONST 2 (None)
> > > 30 RETURN_VALUE
> > > £½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½
> > >
> > > ÔÚÍâ²ã´æxÖµµÄʱºòµÄbyte codeÊÇ 3 STORE_NAME 0 (x)
> > > ÔÚceval.cÔ´ÂëÀïÕâ¶Î¶ÔÓ¦µÄÊÇ
> > > case STORE_NAME:
> > > w = GETITEM(names, oparg);
> > > v = POP();
> > > if ((x = f->f_locals) != NULL) {
> > > if (PyDict_CheckExact(x))
> > > err = PyDict_SetItem(x, w, v);
> > > else
> > > err = PyObject_SetItem(x, w, v);
> > > Py_DECREF(v);
> > > if (err == 0) continue;
> > > break;
> > > }
> > > PyErr_Format(PyExc_SystemError,
> > > "no locals found when storing %s",
> > > PyObject_REPR(w));
> > > break;
> > >
> > > ÕâÊÇ´æÔÚfooÍâ²ãframeµÄµÄlocalÀï°É£¿µ«ÊÇÍâ²ãbyte
> > > codeÀïxûÓÐÔÚco_varnamesÀïÃæ£¬ÄÇôËü¾ÍÓ¦¸ÃÔÚglobalÀï°É£¿
> > > fooÀïÃæÓÖÈçºÎ´ÓÍâ²ã´«½øÀ´µÄglobal±íÀï²éµ½xµÄֵĨ£¿ÎÒÔõôҲÕÒ²»µ½fooÍâÃæ½«x¸³Öµµ½global±íµÄ²¿·Ö£¬Çó½ÌÁË£¡
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese在lists.python.cn
> > > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > > python-chinese-request在lists.python.cn
> > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> >
> > --
> > »¶Ó·ÃÎÊ£º
> > http://blog.csdn.net/ccat
> >
> > ÁõöÎ
> > March.Liu
> >
> > ------------------------------
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
>
>
>
> --
> Robert
> PythonÔ´ÂëÆÊÎö¡ª¡ªhttp://blog.donews.com/lemur/
>
> ------------------------------
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
--
Robert
PythonÔ´ÂëÆÊÎö¡ª¡ªhttp://blog.donews.com/lemur/
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20061129/4fbcda53/attachment.html
关于邮件列表 python-chinese 的更多信息