python函数的作用域和名称空间

来源:互联网 发布:dd3000软件 编辑:程序博客网 时间:2024/05/20 11:25
#!/usr/bin/python# -*- coding utf8 -*-'''三种名称空间内置名称空间'''#1.内置名称空间 随着Python解释器的启动产生print(sum)print(max)#查看内置的所有import builtinsprint(dir(builtins))for i in dir(builtins):    print(i)#全局名称空间:文件的执行会产生  指的是文件级别定义的名字x  = 1if x == 1:    y = 2# 局部名称空间的有类级别  函数级别  模块级别   只在调用时临时绑定 结束调用即结束class foo():    x = 's'    pass#import this   查看 Namespaces are one honking great idea -- let's do more of those!#作用域:全局作用域globals(内置名称空间/全局名称空间) 局部作用域locals(局部名称空间)#名字的查找顺序: 局部名称空间 -->全局名称空间 -->内置名称空间x = 1def func():    x =2    print(x)    print(locals())         #查看局部的作用域    print(globals())func()print(globals())   #结果可以看到定义的变量x和函数func 以及 内置的名字builtins#print(locals())#--------------------------------------------------------------------------#全局作用域:全局有效,在任何位置都能被访问到,除非del删掉,否则会一直存活到文件执行完毕#局部作用域的名字:局部有效,只能在局部范围调用,只在函数调用时才有效,调用结束就失效x=1#示例 全局可调用def f1():    print(x)def foo():    print(x)#示例优先调用局部def f(x):    # x=4    def f2():        # x=3        def f3():            # x=2            print(x)        f3()    f2()f(4)  #等同于函数内定义x=4 

原创粉丝点击