• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python 如何访问外围作用域中的变量

Python 如何访问外围作用域中的变量

作者:hebedich 字体:[增加 减小] 来源:互联网

hebedich 通过本文主要向大家介绍了python 变量作用域,python 作用域,python 函数作用域,变量的作用域,js变量作用域等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在表达式中引用变量时,Python 会按照如下的顺序遍历各个作用域,寻找该变量:

  1. 当前函数作用域
  2. 任何外围作用域(比如包含当前函数的其他函数)
  3. global 作用域,即代码所在的模块的作用域

如果上述作用域内都找不到变量,就会报 NameError 异常。

但是对变量赋值时,规则会有所不同。

  1. 如果当前作用域变量已存在,那么其值会被替换。
  2. 如果不存在,则会视为在当前作用域定义新变量,而不是向外围作用域中寻找。

如下函数

def function():
  flag = True
  def helper():
    flag = False
  helper()
  print flag

function()

</div>

由于 helper 中变量是赋值,这里 flag 输出仍为 True。习惯了 c 语言之类静态类型语言,这种设计起初会感到困惑,但其可以有效地防止局部变量污染函数外的环境。

需求总是多样的,一定有程序员想在赋值时访问外围作用域。如果是 Python2,他可以这么做

def function():
  flag = [True]
  def helper():
    flag[0] = False
  helper()
  print flag

function()

</div>

先用 flag[0] 是读操作,产生一次变量引用,寻找到外围作用域中 flag,这时候再赋值 flag[0] = False 便不会新定义变量了。

如果是 Python3,则可以使用 nonlocal 关键字。

def function():
  flag = True
  def helper():
    nonlocal flag
    flag = False
  helper()
  print flag

function()
</div>

</div>

您可能想查找下面的文章:

  • Python 如何访问外围作用域中的变量
  • Python中的变量和作用域详解
  • 深入解析Python中函数的参数与作用域
  • Python作用域用法实例详解
  • Python作用域用法实例详解
  • 解读Python编程中的命名空间与作用域
  • 解读Python编程中的命名空间与作用域
  • 优化Python代码使其加快作用域内的查找
  • 优化Python代码使其加快作用域内的查找
  • 讲解python参数和作用域的使用

相关文章

  • Python中random模块生成随机数详解
  • 详解Django中的过滤器
  • 浅谈Python生成器generator之next和send的运行流程(详解)
  • Python中的ConfigParser模块使用详解
  • python根据出生日期返回年龄的方法
  • Python的爬虫程序编写框架Scrapy入门学习教程
  • Python中的模块导入和读取键盘输入的方法
  • Python入门篇之字典
  • 在Python中使用Neo4j数据库的教程
  • Python迭代器和生成器介绍

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python的Urllib库的基本使用教程
    • 介绍Python的Urllib库的一些高级用法
    • 利用Python生成文件md5校验值函数的方法
    • Python中文件I/O高效操作处理的技巧分享
    • python简单实现旋转图片的方法
    • Python爬虫利用cookie实现模拟登陆实例详解
    • Pycharm学习教程(7)虚拟机VM的配置教程
    • python类参数self使用示例
    • Python实现的简单hangman游戏实例
    • 讲解Python中if语句的嵌套用法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有