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实现简单中文词频统计示例
Nov 08 Python
神经网络python源码分享
Dec 15 Python
Python、 Pycharm、Django安装详细教程(图文)
Apr 12 Python
Django框架模板用法入门教程
Nov 04 Python
Python中的四种交换数值的方法解析
Nov 18 Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 Python
Python程序控制语句用法实例分析
Jan 14 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
django修改models重建数据库的操作
Mar 31 Python
构建高效的python requests长连接池详解
May 02 Python
python构造IP报文实例
May 05 Python
Python定义一个Actor任务
Jul 29 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
php获取远程文件大小
2015/10/20 PHP
PHP微信分享开发详解
2017/01/14 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
js的对象与函数详解
2019/01/21 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
基于python实现微信模板消息
2015/12/21 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
Django重设Admin密码过程解析
2020/02/10 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
本科毕业自我鉴定
2014/03/20 职场文书
租房协议书怎么写
2014/04/10 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
自我查摆剖析材料
2014/10/11 职场文书
工作检讨书500字
2014/10/19 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
商铺租房协议书范本
2014/12/04 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
中英文求职信范文
2015/03/19 职场文书
2015年工会工作总结
2015/03/30 职场文书
工程款申请报告
2015/05/15 职场文书
初婚未育证明样本
2015/06/18 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书