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列表与元组详解实例
Nov 01 Python
python实现删除文件与目录的方法
Nov 10 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
python使用pandas实现数据分割实例代码
Jan 25 Python
Python绘制并保存指定大小图像的方法
Jan 10 Python
python开启debug模式的方法
Jun 27 Python
python使用flask与js进行前后台交互的例子
Jul 19 Python
django的csrf实现过程详解
Jul 26 Python
python tkinter控件布局项目实例
Nov 04 Python
基于python及pytorch中乘法的使用详解
Dec 27 Python
Django media static外部访问Django中的图片设置教程
Apr 07 Python
Python类成员继承重写的实现
Sep 16 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的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
js控制框架刷新
2008/08/01 Javascript
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
微信小程序 教程之WXSS
2016/10/18 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
使用Python生成随机密码的示例分享
2016/02/18 Python
Python使用filetype精确判断文件类型
2017/07/02 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
python实现PID算法及测试的例子
2019/08/08 Python
使用Python实现分别输出每个数组
2019/12/06 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
法学专业毕业生自荐信范文
2013/12/18 职场文书
实习老师离校感言
2014/02/03 职场文书
爱我中华教学反思
2014/04/28 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
大学生年度个人总结
2015/02/15 职场文书
篮球赛新闻稿
2015/07/17 职场文书
学习十八大的感悟
2015/08/11 职场文书
欢送领导祝酒词
2015/08/12 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
mysql insert 存在即不插入语法说明
2022/03/25 MySQL