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 查找文件夹下所有文件 实现代码
Jul 01 Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
python实现文本界面网络聊天室
Dec 12 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
Python3中exp()函数用法分析
Feb 19 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 Python
Python warning警告出现的原因及忽略方法
Jan 31 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
Nov 25 Python
pycharm永久激活超详细教程
Oct 29 Python
利用Python+OpenCV三步去除水印
May 28 Python
python创建字典及相关管理操作
Apr 13 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
Linux编译升级php的详细方法
2013/11/04 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
vue + typescript + 极验登录验证的实现方法
2019/06/27 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
python正则表达式抓取成语网站
2013/11/20 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
python实现日志按天分割
2019/07/22 Python
python爬虫添加请求头代码实例
2019/12/28 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
python中封包建立过程实例
2021/02/18 Python
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
大学生找工作推荐信范文
2013/11/28 职场文书
超市重阳节活动方案
2014/02/10 职场文书
降消项目实施方案
2014/03/30 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python