之前小编跟大家在文章内提过关于作用域,部分小伙伴要求小编在详细讲解这方面的内容,于是小编不负众望,搜罗了超级多的内容,希望给大家制作一个非常深刻,便于理解的内容,下面小编就着重针对这部分,给大家整理了以下步骤。关于作用域
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、成都做网站、密云网络推广、成都小程序开发、密云网络营销、密云企业策划、密云品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供密云建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
Python的作用域可以分为四种:
l L (Local) 局部作用域
l E (Enclosing) 闭包函数外的函数中
l G (Global) 全局作用域
l B (Built-in) 内建作用域
影响变量/函数作用范围的有:
l 函数:def 或 lambda
l 类:class
l 关键字:global noglobal
l 文件:*py
l 推导式:[],{},()等,仅限Py3.x中,Py2.x会出现变量泄露。
1、赋值在前,引用在后
# ------同作用域内------ name = "MING" print(name) # ------不同作用域内------ name = "MING" def main(): print(name)
2、引用在前,赋值在后(同一作用域内)
print(name) name = "MING" # UnboundLocalError: local variable 'name' referenced before assignment
3、赋值在低层,引用在高层
# L -> E -> G -> B # 从左到右,由低层到高层 def main(): name = "MING" print(name) # NameError: name 'name' is not defined
关于改变作用域
变量的作用域,与其定义(或赋值)的位置有关,但不是绝对相关。因为我们可以在某种程度上去改变向上的作用范围。
l 关键字:global将 局部变量 变为全局变量
l 关键字:nonlocal可以在闭包函数中,引用并使用闭包外部函数的变量(非全局的噢)
global好理解,这里只讲下nonlocal。
先来看个例子
def deco(): age = 10 def wrapper(): age += 1 return wrapper deco()()
运行一下,会报错:
# UnboundLocalError: local variable 'age' referenced before assignment
但是这样就OK
def deco(): age = 10 def wrapper(): nonlocal age age += 1 return wrapper deco()() # 输出:11
其实,你如果不使用 +=、-=等一类的操作,不加nonlocal也没有关系。这就展示了闭包的特性。
def deco(): age = 10 def wrapper(): print(age) return wrapper deco()() # 输出:10
以上是关于python作用域内容整合集锦,大家可以了解下哦~另外,作用域在大家的项目实践里,是经常能遇到的事情,因此,掌握好作用域也至关重要,多看两遍以上内容,很容易就掌握住了。
当前标题:创新互联Python教程:如何快速掌握Python函数的作用域?
文章来源:http://www.shufengxianlan.com/qtweb/news14/225164.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联