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脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 Python
pycharm安装和首次使用教程
Aug 27 Python
Python元组知识点总结
Feb 18 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
Jun 03 Python
简单了解python单例模式的几种写法
Jul 01 Python
一行Python代码过滤标点符号等特殊字符
Aug 12 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
Feb 20 Python
python Tornado框架的使用示例
Oct 19 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
区分JS中的undefined,null,"",0和false
2007/03/08 Javascript
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
javascript省市级联功能实现方法实例详解
2015/10/20 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
Bootstrap3 图片(响应式图片&图片形状)
2017/01/04 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
python设置windows桌面壁纸的实现代码
2013/01/28 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
Python面向对象之继承代码详解
2018/01/29 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
销售助理岗位职责
2014/02/21 职场文书
静心口服夜广告词
2014/03/20 职场文书
品德评语大全
2014/05/05 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
2016年记者节感言
2015/12/08 职场文书