首页 > 编程知识 正文

python数据科学导引,python函数变量的作用域

时间:2023-05-03 11:44:47 阅读:135514 作者:1359

LEGB:L :即locals、当前存在的命名空间(函数或者模块)、函数自变量也属于命名空间内的变量

e :即enclosing function,外部嵌套函数的命名空间

g :即全局变量

b :是嵌入式模块的命名空间,所有这些嵌入式模块都位于__builtin__中

变量检索的优先顺序:局部作用域(l )嵌套作用域(e )全局作用域(g )内建作用域(b ) )。

让我们看一个例子

1:city='政府周'

定义类别名称(: )

city='shanghai '

打印站点

cityname () )

打印站点

点击。 上海

正州

描述:由于模块中的值为zhengquous的city变量是全局变量,函数cityname中的city变量是局部变量,因此根据范围搜索顺序,函数中的print语句中的city值必须位于cityname函数内部的city中函数饥饿的print语句的city是模块中的全局变量

2 )上例中的函数内部赋值如何更改外部作用域中同名变量的值city='zhengzhou '

定义类别名称(: )

环球城

city='shanghai '

打印站点

cityname () )

打印站点

点击。 上海

上海

说明:此处使用关键字global将函数内部的city变量声明为全局变量。 这样,就可以在函数内部的范围内更改全局变量

关键字非本地。

在python2中,闭包只能读取外部函数的变量,不能重写。 为了解决这个问题,python3引入了nonlocal关键字,通过在闭包中用nonlocal声明变量,解释器现在可以在外部函数中查找变量名称。 nonlocal与global相似。 nonlocal关键字允许在嵌套函数中更改嵌套范围def cityname () ) :

city='正州'

定义类别名称(: )

nonlocal name

city='shanghai '

Cityname () )

是打印(city )

cityname () )

点击。 上海

关键词global和nonlocal的区别:

1 :功能不同。 global关键字限定变量后,表示该变量为全局变量,更改后全局变量也会更改。 另一方面,nonlocal杆自限定变量是上级函数的局部变量,如果上级函数中不存在该局部变量,则在nonlocal位置会出现错误

2 :范围不同。 可以在任何地方使用global关键字,包括顶层函数和嵌套函数。 即使有以前未定义的更改,global也可以经过限定并直接使用,但nonlocal关键字只能在嵌套函数中使用,函数中定义了相应的局部变量。 如果未定义,则会发生错误

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。