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同时给两个收件人发送邮件的方法
Apr 30 Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 Python
使用Python+Splinter自动刷新抢12306火车票
Jan 03 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
详解python-图像处理(映射变换)
Mar 22 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
python入门之井字棋小游戏
Mar 05 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
python判断all函数输出结果是否为true的方法
Dec 03 Python
Python之Matplotlib绘制热力图和面积图
Apr 13 Python
详解OpenCV曝光融合
Apr 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 xml留言板 xml存储数据的简单例子
2009/08/24 PHP
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
学习PHP session的传递方式
2016/06/15 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
Python实现获取某天是某个月中的第几周
2015/02/11 Python
python使用分治法实现求解最大值的方法
2015/05/12 Python
Python实现批量转换文件编码的方法
2015/07/28 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
python导入pandas具体步骤方法
2019/06/23 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
Python流程控制常用工具详解
2020/02/24 Python
浅析NumPy 切片和索引
2020/09/02 Python
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
森林防火工作方案
2014/02/14 职场文书
市场营销战略计划书
2014/05/06 职场文书