好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Python命名空间实例解析

Python的命名空间是Python程序猿必须了解的内容,对Python命名空间的学习,将使我们在本质上掌握一些Python中的琐碎的规则。

示例:

info = "Adress : "
 def func_father(country):
     def func_son(area):
         city= "Shanghai " #此处的city变量,覆盖了父函数的city变量
         print(info + country + city + area)
     city = " Beijing "
     #调用内部函数
     func_son("ChaoYang ");
    
 func_father("China ") 

2、全局 (模块级别)命名空间可以通过 globals() BIF来访问。

示例:

'''Created on 2013-5-26'''
   
import copy
from copy import deepcopy
   
gstr = "global string"
   
def func1(i, info):
    x = 12345
    print(locals())
   
func1(1 , "first")
   
if __name__ == "__main__":
    print("the current scope's global variables:")
    dictionary=globals()
    print(dictionary) 

3、 locals 与 globals 之间的一个重要的区别

locals 是只读的,globals 不是

示例:

def func1(i, info):
    x = 12345
    print(locals())
    locals()["x"]= 6789
    print("x=",x)
   
y=54321
func1(1 , "first")
globals()["y"]= 9876
print( "y=",y) 

解释:

  locals 实际上没有返回局部名字空间,它返回的是一个拷贝。所以对它进行改变对局部名字空间中的变量值并无影响。

  globals 返回实际的全局名字空间,而不是一个拷贝。所以对 globals 所返回的 dictionary 的任何的改动都会直接影响到全局变量。

查看更多关于Python命名空间实例解析的详细内容...

  阅读:35次