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网络编程学习笔记(四):域名系统
Jun 09 Python
python实现的DES加密算法和3DES加密算法实例
Jun 03 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 Python
用Django实现一个可运行的区块链应用
Mar 08 Python
用Python写一段用户登录的程序代码
Apr 22 Python
解决python爬虫中有中文的url问题
May 11 Python
pytorch cnn 识别手写的字实现自建图片数据
May 20 Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
如何使用Python标准库进行性能测试
Jun 25 Python
Python发送邮件的实例代码讲解
Oct 16 Python
Python使用UDP实现720p视频传输的操作
Apr 24 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
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
PHP安全技术之 实现php基本安全
2010/09/04 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
js 页面输出值
2008/11/30 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
JS制作类似选项卡切换的年历
2016/12/03 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
分享一个常用的Python模拟登陆类
2015/03/29 Python
Python+django实现文件上传
2016/01/17 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
上海某公司.net方向笔试题
2014/09/14 面试题
大学生在校学习的自我评价
2014/02/18 职场文书
剪彩仪式主持词
2014/03/19 职场文书
技术合作协议书范本
2014/04/18 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android