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实现排序算法
Feb 14 Python
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
和孩子一起学习python之变量命名规则
May 27 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
python进行文件对比的方法
Dec 24 Python
django的auth认证,authenticate和装饰器功能详解
Jul 25 Python
在Tensorflow中查看权重的实现
Jan 24 Python
Python实现aes加密解密多种方法解析
May 15 Python
使用python实现下载我们想听的歌曲,速度超快
Jul 09 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
2020/04/08 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
Python smallseg分词用法实例分析
2015/05/28 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
Python 的类、继承和多态详解
2017/07/16 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
一个入门级python爬虫教程详解
2021/01/27 Python
CSS3轻松实现清新 Loading 效果的简单实例
2016/06/06 HTML / CSS
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
个人教师自我评价范文
2013/12/02 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
SpringBoot+VUE实现数据表格的实战
2021/08/02 Java/Android
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js