python小点心--globals函数

          globals函数提供了基于字典的访问全局变量的功能,如果理解这个函数的功能,先从最简单的情况开始

       

#coding=utf-8
'''
Created on 2016-1-11

@author: Administrator
'''
print globals()
          这个脚本中,只有一行代码,就是打印global()函数的返回值,输出内容如下

<pre name="code" class="html">{'__builtins__': <module '__builtin__' (built-in)>, 
'__name__': '__main__', 
'__file__': 'E:\\javaSrc\\MyPython\\Test\\testGlobals3.py',
 '__doc__': '\nCreated on 2016-1-11\n\n@author: Administrator\n', 
'__package__': None
}
 

           可以清楚的看到,返回值是一个字典,字典里的内容除了第一个意外,都很容易理解,__builtins__是对内建模块__builtin__的引用,__name__的值为__main__,想想平时经常使用的if __name__ == '__main__':你就明白这个字段的意义了。__file__是该脚本的目录,__doc__是最上面的注释,__package__是指包名

          现在,进入第二阶段

          

#coding=utf-8
'''
Created on 2016-1-11

@author: Administrator
'''

name = 'apple'
price = 100
print globals()
         打印内容为

{
'name': 'apple',
 '__builtins__': <module '__builtin__' (built-in)>, 
'__file__': 'E:\\javaSrc\\MyPython\\Test\\testGlobals3.py', 
'__package__': None,
 'price': 100, 
'__name__': '__main__', 
'__doc__': '\nCreated on 2016-1-11\n\n@author: Administrator\n'
}

          现在,字典里多了两个键值对,正是刚刚添加的name,和price

          OK,进入第三阶段

          

#coding=utf-8
'''
Created on 2016-1-11

@author: Administrator
'''

name = 'apple'
price = 100

def testGlobals():
    print 'test globals'
fvars = globals()
print fvars
fvars['testGlobals']()
           这次,模块内增加了一个函数,最终的输出内容为

            

{
'testGlobals': <function testGlobals at 0x00000000024D3A58>, 
'name': 'apple',
 '__builtins__': <module '__builtin__' (built-in)>, 
'fvars': {...}, 
'__file__': 'E:\\javaSrc\\MyPython\\Test\\testGlobals3.py', 
'__package__': None, 
'price': 100, 
'__name__': '__main__', 
'__doc__': '\nCreated on 2016-1-11\n\n@author: Administrator\n'
}
             字典里又新增了两个键值对,testGlobals是新增加的函数,而且,可以直接通过fvars['testGlobals']()来调用该函数,fvars是一个变量

          最后一个阶段,新增加一个类

#coding=utf-8
'''
Created on 2016-1-11

@author: Administrator
'''

name = 'apple'
price = 100
class hello:
    def GET(self, name):
        return "Hello %s!\n" % name
    
def testGlobals():
    print 'test globals'
fvars = globals()
print fvars
fvars['testGlobals']()

klass = fvars.get('hello')
if hasattr(klass, 'GET'):
    func = getattr(klass, 'GET')
    print func(klass(), ('kwsy',))

输出内容为

{
'testGlobals': <function testGlobals at 0x0000000002493A58>, 
'name': 'apple', 
'__builtins__': <module '__builtin__' (built-in)>, 
'fvars': {...},
 '__file__': 'E:\\javaSrc\\MyPython\\Test\\testGlobals3.py',
 'hello': <class __main__.hello at 0x0000000002525FA8>, 
'__package__': None,
 'price': 100, 
'__name__': '__main__',
 '__doc__': '\nCreated on 2016-1-11\n\n@author: Administrator\n'
}
        字典里多了一个 ‘hello’ 关键字,它的值正是类hello

       globals返回的字典是可以修改的,其修改会真实的产生影响

       

#coding=utf-8
'''
Created on 2016-1-11

@author: Administrator
'''

name = 'apple'
price = 100

fvars = globals()
fvars['price'] = 101

print price
        最后的打印结果将是101


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值