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 21 Python
在Django的URLconf中使用命名组的方法
Jul 18 Python
简单解决Python文件中文编码问题
Nov 22 Python
python判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
pyhton列表转换为数组的实例
Apr 04 Python
python+selenium实现自动化百度搜索关键词
Jun 03 Python
python实时检测键盘输入函数的示例
Jul 17 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
keras 实现轻量级网络ShuffleNet教程
Jun 19 Python
python两个list[]相加的实现方法
Sep 23 Python
Python jieba库分词模式实例用法
Jan 13 Python
python基于机器学习预测股票交易信号
May 25 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/02/14 PHP
解析thinkphp中的导入文件标签
2013/06/20 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
php header函数的常用http头设置
2015/06/25 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
js取得url地址参数实例
2013/02/22 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
纯js实现画一棵树的示例
2017/09/05 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
python静态方法实例
2015/01/14 Python
低版本中Python除法运算小技巧
2015/04/05 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
JAVA程序员自荐书
2014/01/30 职场文书
学校消防演习方案
2014/02/19 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
婚前协议书标准版
2014/10/19 职场文书
2014年客房部工作总结
2014/11/22 职场文书
大学生创业事迹材料
2014/12/30 职场文书