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 字符串定义
Sep 25 Python
python正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
Python中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
python 字典(dict)按键和值排序
Jun 28 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
python统计多维数组的行数和列数实例
Jun 23 Python
pytorch对可变长度序列的处理方法详解
Dec 08 Python
Python3中列表list合并的四种方法
Apr 19 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 Python
python 邮件检测工具mmpi的使用
Jan 04 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
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
php操作JSON格式数据的实现代码
2011/12/24 PHP
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
ioncube_loader_win_5.2.dll的错误解决方法
2015/01/04 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
jQuery链使用指南
2015/01/20 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
React创建组件的三种方式及其区别
2017/01/12 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
如何通过JS实现转码与解码
2020/02/21 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
Python创建文件和追加文件内容实例
2014/10/21 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
linux下进程间通信的方式
2014/12/23 面试题
揭牌仪式策划方案
2014/05/28 职场文书
作风年建设汇报材料
2014/08/14 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang