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 相关文章推荐
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
Python 多线程的实例详解
Sep 07 Python
深入理解Python3 内置函数大全
Nov 23 Python
PyCharm代码格式调整方法
May 23 Python
python隐藏终端执行cmd命令的方法
Jun 24 Python
Pandas DataFrame中的tuple元素遍历的实现
Oct 23 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
python类中super() 的使用解析
Dec 19 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
Jan 03 Python
3分钟看懂Python后端必须知道的Django的信号机制
Jul 26 Python
Python unittest生成测试报告过程解析
Sep 08 Python
Jupyter Notebook 远程访问配置详解
Jan 11 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中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
对于js垃圾回收机制的理解
2017/09/14 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
python代码xml转txt实例
2020/03/10 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
免税水晶:Duty Free Crystal
2019/05/13 全球购物
StringBuilder和String的区别
2015/05/18 面试题
翻译专业应届生求职信
2013/11/23 职场文书
公司合作意向书
2014/04/01 职场文书
教师专业自荐信
2014/05/31 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
2015年路政工作总结
2015/05/22 职场文书
退休教师欢送会致辞
2015/07/31 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python
解析Java中的static关键字
2021/06/14 Java/Android