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中MySQLdb模块用法实例
Nov 10 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
http请求 request失败自动重新尝试代码示例
Jan 25 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
python selenium自动上传有赞单号的操作方法
Jul 05 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
python爬虫基础教程:requests库(二)代码实例
Apr 09 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 Python
python 批量下载bilibili视频的gui程序
Nov 20 Python
python随机打印成绩排名表
Jun 23 Python
Python实现位图分割的效果
Nov 20 Python
Python echarts实现数据可视化实例详解
Mar 03 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性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
php实现httpRequest的方法
2015/03/13 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
一个简单的js动画效果代码
2010/07/20 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
Python continue语句用法实例
2014/03/11 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
解析python实现Lasso回归
2019/09/11 Python
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
电工技术比武方案
2014/05/11 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
出国签证在职证明范本
2014/11/24 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
云冈石窟导游词
2015/02/04 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
Pandas-DataFrame知识点汇总
2022/03/16 Python