Python作用域用法实例详解


Posted in Python onMarch 15, 2016

本文实例分析了Python作用域用法。分享给大家供大家参考,具体如下:

每一个编程语言都有变量的作用域的概念,Python也不例外,以下是Python作用域的代码演示:

def scope_test():
  def do_local():
    spam = "local spam"
  def do_nonlocal():
    nonlocal spam
    spam = "nonlocal spam"
  def do_global():
    global spam
    spam = "global spam"
  spam = "test spam"
  do_local()
  print("After local assignment:", spam)
  do_nonlocal()
  print("After nonlocal assignment:", spam)
  do_global()
  print("After global assignment:", spam)
scope_test()
print("In global scope:", spam)

程序的输出结果:

After local assignment: test spam
After nonlocal assignment: nonlocal spam
After global assignment: nonlocal spam
In global scope: global spam

注意: local 赋值语句是无法改变 scope_test 的 spam 绑定。 nonlocal 赋值语句改变了 scope_test 的 spam 绑定,并且 global 赋值语句从模块级改变了 spam 绑定。

其中,nonlocal是Python 3新增的关键字。

你也可以看到在 global 赋值语句之前对 spam 是没有预先绑定的。

小结:

遇到在程序中访问全局变量并且要修改全局变量的值的情况可以使用:global关键字,在函数中声明此变量是全局变量

nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。

global关键字很好理解,其他语言大体也如此。这里再举一个nonlocal的例子:

def make_counter():
  count = 0
  def counter():
    nonlocal count
    count += 1
    return count
  return counter
def make_counter_test():
 mc = make_counter()
 print(mc())
 print(mc())
 print(mc())

运行结果:

1
2
3

转自:小谈博客 http://www.tantengvip.com/2015/05/python-scope/

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python 学习笔记
Dec 27 Python
Python兔子毒药问题实例分析
Mar 05 Python
用Python制作检测Linux运行信息的工具的教程
Apr 01 Python
python正则表达式爬取猫眼电影top100
Feb 24 Python
pandas or sql计算前后两行数据间的增值方法
Apr 20 Python
使用python生成杨辉三角形的示例代码
Aug 29 Python
Python逐行读取文件中内容的简单方法
Feb 26 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 Python
详解python polyscope库的安装和例程
Nov 13 Python
Python 多进程原理及实现
Dec 21 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
Python编写nmap扫描工具
Jul 21 Python
Python的净值数据接口调用示例分享
Mar 15 #Python
Python简单连接MongoDB数据库的方法
Mar 15 #Python
Python函数中的函数(闭包)用法实例
Mar 15 #Python
实例讲解Python中函数的调用与定义
Mar 14 #Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 #Python
简单讲解Python中的字符串与字符串的输入输出
Mar 13 #Python
深入解析Python中的list列表及其切片和迭代操作
Mar 13 #Python
You might like
实现“上一页”和“下一页按钮
2006/10/09 PHP
php 常用字符串函数总结
2008/03/15 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
js获取提交的字符串的字节数
2009/02/09 Javascript
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
Python程序设计入门(4)模块和包
2014/06/16 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
Python paramiko模块的使用示例
2018/04/11 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
探矿工程师自荐信
2014/01/24 职场文书
党建目标管理责任书
2014/07/25 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python
mysql创建存储过程及函数详解
2021/12/04 MySQL
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers