Python虚拟机框架(Python 源码剖析第八章)

ExpandedBlockStart.gif frame
 1  >>>   import  sys
 2  >>>  value  =   3
 3  >>>   def  g():
 4      frame  =  sys._getframe()
 5       print   ' current function is  :  ' , frame.f_code.co_name
 6      caller  =  frame.f_back
 7       print   ' caller function is :  ' , caller.f_code.co_name
 8       print   " caller's local namespace:  " , caller.f_locals
 9       print   " caller's global namespace:  " , caller.f_globals.keys()
10 
11      
12  >>>   def  f():
13      a  =   1
14      b  =   2
15      g()
16 
17      
18  >>>   def  show():
19      f()
20 
21      
22  >>>  show()
23  current function  is   :  g
24  caller function  is  :  f
25  caller ' s local namespace:  { ' a ' : 1,  ' b ' : 2}
26  caller ' s global namespace:  [ ' g ' ' f ' ' __builtins__ ' ' show ' ' value ' ' __package__ ' ' sys ' ' __name__ ' ' __doc__ ' ]

 

 

ExpandedBlockStart.gif error
 1  >>>  a  =   1
 2  >>>   def  g():
 3       print  a
 4 
 5      
 6  >>>   def  f():
 7       print  a
 8      a  =   2
 9       print  a
10 
11      
12  >>>  g()
13  1
14  >>>  f()
15 
16  Traceback (most recent call last):
17    File  " <pyshell#11> " , line  1 in   < module >
18      f()
19    File  " <pyshell#9> " , line  2 in  f
20       print  a
21  UnboundLocalError: local variable  ' a '  referenced before assignment  

 

转载于:https://www.cnblogs.com/zhtf2014/archive/2010/11/17/1880199.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值