当前位置:首页 > 服务端 > Python3.X增加的关键字nonlocal

Python3.X增加的关键字nonlocal

2022年09月17日 10:57:26服务端4
全局变量和别名
Python里只有2种作用域:全局作用域和局部作用域。全局作用域是指当前代码所在模块的作用域,局部作用域是指当前函数或方法所在的作用域。其实准确来说,Python 3.x引入了nonlocal关键字,可以用于标识外部作用域的变量。

局部作用域里的代码可以读外部作用域(包括全局作用域)里的变量,但不能更改它。一旦进行更改,就会将其当成是局部变量。而如果在更改前又进行了读取操作,则会抛出异常。

def f():
  x = '1'
  def g():
    x += '2'
    return x
  return g
print f()()
如果要更改外部作用域里的变量,最简单的办法就是将其放入全局作用域,用global关键字引入该变量。

x = ''
def f():
  global x
  x = '1'
  def g():
    global x
    x += '2'
    return x
  return g
print f()()
在Python 2.x中,闭包只能读外部函数的变量,而不能改写它。

def a():
  x = 0
  def b():
    print locals()
    y = x + 1
    print locals()
    print x, y
  return b

a()()
如果要对x进行赋值操作, 在Python 2.x中解决这个问题,目前只能使用全局变量:global
为了解决这个问题,Python 3.x引入了nonlocal关键字(详见The nonlocal statement)。
只要在闭包内用nonlocal声明变量,就可以让解释器在外层函数中查找变量名了

def a():
  x = 0
  def b():
    nonlocal x
    x += 1
    print x
  return b

a()()



作者:chainyu
来源链接:https://blog.csdn.net/chain2012/article/details/7415602

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/42395.html

标签: Python
分享给朋友:

“Python3.X增加的关键字nonlocal” 的相关文章

Python快速学习05:面向对象

Python快速学习05:面向对象

        系列文章:[传送门]  Python对象是Python语言的核心部分。Python使用类(class)和对象(object),进行面向对象(object-oriented programming...

python常用时间处理方法

常用时间处理方法 今天 today = datetime.date.today() 昨天 yesterday = today - datetime.timedelta(days=1) 上个月 last_month = today.month - 1...

Python解释器安装教程以及环境变量配置 以及 pycharm的安装与激活

Python解释器安装教程以及环境变量配置 以及 pycharm的安装与激活

计算机的组成 主板:人的骨架,用于拓展设备 CPU:人的大脑,用于计算和逻辑处理 硬盘:存储数据(永久储存),比如电脑上的 C盘,D盘 内存:临时记忆(断电即消失) 操作系统:XP win7 win10 Mac linux 主要是承上启下...

widows下 python环境变量配置

widows下 python环境变量配置 便于cmd命令行操作,例如:直接进入Python解释器环境、使用pip安装模块等。 作者:hello-Jesson 来源链接:https://www.cnblogs.com/hello...

为啥 python自带的 pip运行不了?

为啥 python自带的 pip运行不了?

我们 把python2或者3 解压到指定目录后,然后在配置好 python环境变量后,在CMD窗口 运行 python --version 是正常的     但是运行pip却是 提示没有 这个命令呢?   &n...

cherrypy安装使用,配置python环境变量

  cherrypy安装使用,配置python环境变量 2011-01-16 22:03 cherrypy安装使用,配置python环境变量Cherry...

如何在idea中加载本地中已有的python

如何在idea中加载本地中已有的python

本地上安装好了python, 在IDEA中new Project的时候,new Python,选择SDK选择本地的python(本地的python已经配置好了环境变量才行) 另外,默认是不会导入Python中已安装的模块的,你需要勾选   &n...

Python安装与环境变量的配置

Python安装与环境变量的配置

python下载:          Python安装包下载地址:http://www.python.org/               &nb...

python环境变量自动配置脚本(setx使用)

前言 setx不是windows系统自带的工具,需要到微软官网下载,但是有的系统也会自带。(是官方提供的,可放心食用) set和setx都可以用来配置环境变量。他们的不同点在于,set只是临时的修改环境变量,控制台关闭之后效果就消失,setx则可以永久改变环境变量(自动修改...

在Java中调用Python

在Java中调用Python

写在前面 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢。当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单。恰好我在项目中就遇到了这个问题,需要在Java程序中调用Python程序。关于在Java中调用Python程序...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。