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 Tkinter简单布局实例教程
Sep 03 Python
Python操作列表之List.insert()方法的使用
May 20 Python
Python中使用支持向量机(SVM)算法
Dec 26 Python
Python如何生成树形图案
Jan 03 Python
Python使用requests发送POST请求实例代码
Jan 25 Python
用Python读取几十万行文本数据
Dec 24 Python
python使用KNN算法识别手写数字
Apr 25 Python
python利用7z批量解压rar的实现
Aug 07 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
Python使用Socket实现简单聊天程序
Feb 28 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
php扩展ZF――Validate扩展
2008/01/10 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
python2和python3哪个使用率高
2020/06/23 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
咖啡厅创业计划书范本
2014/01/22 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
单位综合评价意见
2015/06/05 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
通讯稿格式及范文
2015/07/22 职场文书
工作后的感想
2015/08/07 职场文书
超市主管竞聘书
2015/09/15 职场文书
青年干部培训班学习心得体会
2016/01/06 职场文书
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL