Python命名空间及作用域原理实例解析


Posted in Python onAugust 12, 2020

Python命名空间和作用域

总结

emmm,这一块讲了2个内容,一个是命名空间,一个是作用域。一个一个说吧

命名空间

A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries

上边这段是官方文档定义的,简单来说就是名字到对象的映射,我们知道,python的一切都是对象,你所定义的变量名其实只是个引用。这样就好理解了。python的命名空间由python数据结构字典实现。
python的命名空间细分的话有三种。如图所示。
Python命名空间及作用域原理实例解析

这一部分没什么好说的,重要的是理解其概念

作用域

A scope is a textual region of a Python program where a namespace is directly accessible. "Directly accessible" here means that an unqualified reference to a name attempts to find the name in the namespace.

由官方文档可以看出,作用域就是可以直接访问的区域。就是全局到局部。这里举个代码例子就行了。

#demo.py
global_var='haha'  #定义全局变量

def tool():
  local_var='local'  #局部变量
  print(local_var)  #访问局部变量,可以访问
print(global_var)  #访问全局变量,可以访问
print(local_var)  #访问局部变量,找不到,无法访问

这一部分的惊喜知识是跟作用域有关的。学到了2个关键字global和nonlocal

global_var='haha'  #定义全局变量
def tool():
  global_var='22'
  print(global_var)
print(global_var)  #访问全局变量,可以访问
tool()

这段代码输出了2个global_var。输出结果是不一样的。tool函数里在局部修改了global_var的值,并不影响全局。此时如果你想影响全局,你就需要用到关键字global.

global_var='haha'  #定义全局变量

def tool():
  global global_var
  global_var='22'
  print(global_var)

tool()
print(global_var)

这样就好了。

nonlocal作用类似,用来修改嵌套作用域的。

def tool():
  var=1
  def inner():
    nonlocal var
    var=2
    print(var)
  inner()
  print(var)
tool()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python安装以及IDE的配置教程
Apr 29 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
Jul 04 Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 Python
Python中如何导入类示例详解
Apr 17 Python
使用Python制作表情包实现换脸功能
Jul 19 Python
Python高级特性 切片 迭代解析
Aug 23 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
解决pip install psycopg2出错问题
Jul 09 Python
如何在windows下安装配置python工具Ulipad
Oct 27 Python
Python机器学习工具scikit-learn的使用笔记
Jan 28 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 Python
python将字典内容写入json文件的实例代码
Aug 12 #Python
Python调用jar包方法实现过程解析
Aug 11 #Python
如何用python免费看美剧
Aug 11 #Python
Pythonic版二分查找实现过程原理解析
Aug 11 #Python
Python3合并两个有序数组代码实例
Aug 11 #Python
Python基于gevent实现文件字符串查找器
Aug 11 #Python
Python3如何实现Win10桌面自动切换
Aug 11 #Python
You might like
Apache设置虚拟WEB
2006/10/09 PHP
怎样在php中使用PDF文档功能
2006/10/09 PHP
PHP基本语法总结
2014/09/06 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
Javascript技术技巧大全(五)
2007/01/22 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
BootStrap下jQuery自动完成的样式调整
2016/05/30 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
详解Swift中属性的声明与作用
2016/06/30 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
python生成随机图形验证码详解
2017/11/08 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
Python连接字符串过程详解
2020/01/06 Python
python 的topk算法实例
2020/04/02 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
违反学校规定检讨书
2014/01/18 职场文书
优秀教师先进事迹
2014/01/22 职场文书
团日活动策划书
2014/02/01 职场文书
国际贸易毕业生求职信范文
2014/02/21 职场文书
工程项目经理任命书
2014/06/05 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
与死神共舞观后感
2015/06/15 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
JS 基本概念详细介绍
2021/10/16 Javascript