您的位置:首页 > 编程语言 > Python开发

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

2017-05-29 09:46 495 查看
#!/usr/bin/python
# -*- coding utf8 -*-

'''
三种名称空间
内置名称空间

'''
#1.内置名称空间 随着Python解释器的启动产生
print(sum)
print(max)

#查看内置的所有
import builtins
print(dir(builtins))

for i in dir(builtins):
print(i)

#全局名称空间:文件的执行会产生  指的是文件级别定义的名字

x  = 1
if 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 = 1
def 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: