【66.1】函数变量的作用域

#coding=utf-8
#函数变量作用域
#变量的查找原则 LEGB 原则
# LOCAL 内部区域
# E enclosing 外面嵌套函数的作用域
# G global 全局变量
# B built-in 内建作用域

#全局和局部变量
#局部变量 只能在被声明的函数内部访问,  全局变量 可以在整个程序访问, 定义在函数外的变量
result = 1000
def sum(a,b):
    result = a + b
    print "in  result is:%d"%result
    return result
sum(1000,2000)
print "out result is:%d"%result


#global 和 nonlocal
#当内部作用域 修改 外部作用域的变量时, 就要用这两个关键字了。

result = 1000
def sum():
    print "in  result is:%d"%result
    return result
sum()
print "out result is:%d"%result
#这里就是直接使用全局变量 result
#但是这里的 result在sum 函数中没有被改变,所以没有声明,直接在用全局变量
# 若要修改全局变量,就需要在函数sum声明该变量 result
# 如不想修改,只是使用,不声明也可以,
# 如果你要用变量result 又要只是内部使用,那就在内部在定义一个result变量 ,这就和第一个例子一样了
result = 1000
def sum():
    global result
    result +=  1
    print "in  result is:%d"%result
    return result
sum()
print "out result is:%d"%result

#nonlocal 这个是3版本的关键字 ,2.7 的版本没有这个关键字

def func():
    count =  1
    def func_in():
        #这里的nonlocal 是3版本的关键字
        nonlocal count
        count =12
    print "in  count is:%d"%count
    func_in()
    return count
func()

 

posted @ 2019-02-22 17:29  科学小怪癖  阅读(108)  评论(0)    收藏  举报