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 04 Python
通过5个知识点轻松搞定Python的作用域
Sep 09 Python
Python使用django搭建web开发环境
Jun 09 Python
python实现朴素贝叶斯算法
Nov 19 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
Jun 18 Python
Python实现FM算法解析
Jun 18 Python
Apache,wsgi,django 程序部署配置方法详解
Jul 01 Python
python3的UnicodeDecodeError解决方法
Dec 20 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
15行Python代码实现免费发送手机短信推送消息功能
Feb 27 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 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
ThinkPHP中的系统常量和预定义常量集合
2014/07/01 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
jquery创建div 实现代码
2009/04/27 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
实例分析python3实现并发访问水平切分表
2018/09/29 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
Python实现一个论文下载器的过程
2021/01/18 Python
python数据抓取3种方法总结
2021/02/07 Python
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
运动会方阵解说词
2014/02/12 职场文书
初三学习计划书范文
2014/04/30 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
四年级小学生评语
2014/12/26 职场文书
先进个人总结范文
2015/02/15 职场文书
cf战队宣传语
2015/07/13 职场文书
员工手册董事长致辞
2015/07/29 职场文书
python Tkinter的简单入门教程
2021/04/11 Python
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android
MySQL创建管理KEY分区
2022/04/13 MySQL