当前位置: > python教程 > python基础教程 >

python作用域变量和nonlocal关键字
栏目分类:python基础教程   发布日期:2019年04月15日 17:40:45   浏览次数:

在Python中,程序的变量并不是在任何位置都可以随意访问的,访问权限决定于这个变量在哪里赋值。变量的作用域决定了哪一部分程序可以访问哪个特点的变量。变量的作用域有4个,分别是
  • L(local)局部作用域
  • E(Enclosing)闭包函数外的函数作用域
  • G(Global)全局作用域
  • B(Built-in)内建作用域
Python按照LEGB的原则搜索变量,即优先级L>E>G>B,也就是,在局部找不到,便会去局部外的局部去找(如闭包),再找不到,就去全局找,若还是找不到,则去内建中找。

num = int(1.5)             #内建作用域
g_num = 2                  #全局作用域
def out_func():
     o_num = 3             #闭包函数外的函数作用域
     def in_func():
         l_num = 4          #局部作用域
 
nonlocal关键字

如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了

在上述程序的modify函数中继续构建modify1函数,通过modify1函数修改modify函数的变量。


#!/usr/bin/ env python
def modify():
    num = 1
    def modify():
        num = 2 
    modify()
    reyurn num
print(modify())

执行该程序的运行结果为1,modify1函数想要修改上一层函数中的变量,需要借助nonlocal关键字。


#!/usr/bin/ env python
def modify():
    num = 1
    def modify1():
        nonlocal num
        num = 2 
    modify1()
    reyurn num
print(modify())

再次执行程序得到预期的结果2.
 

相关热词:

热门关键词
python字符串
     
python教程 python爬虫 python人工智能 Python+大数据 python问答