图解python全局变量与局部变量相关知识

 更新时间:2019年11月02日 09:25:30   作者:不忘初心❤  
这篇文章主要介绍了图解python全局变量与局部变量相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了图解python全局变量与局部变量相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

了解全局变量和局部变量之前,我们先来了解一下作用域

a = 10
def func():
  b = 20
  def inner():
    c = 30

以上面这个程序为例:打印a,b,c

  

可以看到只有a打印 10 ,b和c都报错,这就是作用域的问题。

我们把新创建的一个.py文件看做事一个模块,在模块内定义的变量,如a,就是这个模块的全局变量,作用于全局,不论在哪都可以调用,

但是b和c 是定义在函数内部的,我们叫做局部变量,只能作用在函数内部。

我们在看一个问题

  func和inner函数可以调用变量a 么?

  func函数可以调用变量c么?

答案是:a是全局变量,可以在任意地方调用

      

但是func函数不可以调用c,这时候我们把func看做一个整体,那么inner就是在func内部定义的函数,c也就是inner内部的变量

总结:变量定义在全局可以在任何地方调用,定义在函数内部,只能在函数内使用。

变量查找顺序:LEGB

局部作用域>外层作用域>当前模块中全局>python内置作用域;

在来说关于全局和局部变量的两个两个方法:global,nonlocal。

直接上例子吧:

我们可以看到,局部定义了a, 那么我们直接调用a就会报错,

只有在定义后调用才会打印,并且全局变量的a值不会改变

如果我现在想在局部名称空间改变a的值该怎么做呢?这时候就要用到global了

我们可以看到,全局变量a的值已经修改成15了。

下面来说nonlocal:

我们看到这时候打印a、b的时候出错了,错误提示是没有定义b

但是a没有报错,这是因为a是全局变量,而b是局部变量,所以出现了这种错误,改正如下:

因为b是局部变量,所以调用之前用nonlocal声明,之后就可以调用了。

名称空间

名称空间分类

全局命名空间( Global):每个模块加载执行时创建的,记录了模块中定义的变量,包括模块中定义的函数、类、其他导入的模块、模块级的变量与常量。

局部命名空间(Local):每个函数所拥有的命名空间,记录了函数中定义的所有变量,包括函数的入参、内部定义的局部变量。

内置命名空间(Built-in):任何模块均可以访问,放着内置的函数和异常(比如:input,print,str,list,tuple...)。

名称空间的加载顺序

内置命名空间(程序运行前加载) 一> 全局命名空间(程序运行中:从上到下加载) 一> 局部命名空间(程序运行中:调用时才加载)

名称空间的取值顺序

在局部调用:局部命名空间 一> 全局命名空间 一> 内置命名空间

在全局调用:全局命名空间 一> 内置命名空间

综上所述,在寻找变量时,从小范围,一层一层到大范围去找寻。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Pandas剔除混合数据中非数字的数据操作

    Pandas剔除混合数据中非数字的数据操作

    这篇文章主要介绍了Pandas剔除混合数据中非数字的数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python编程中简洁优雅的推导式示例详解

    python编程中简洁优雅的推导式示例详解

    这篇文章主要为大家介绍了python编程中简洁优雅的推导式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • 使用简单工厂模式来进行Python的设计模式编程

    使用简单工厂模式来进行Python的设计模式编程

    这篇文章主要介绍了使用简单工厂模式来进行Python的设计模式编程的方法,需要的朋友可以参考下
    2016-03-03
  • 详解python中的数据类型和控制流

    详解python中的数据类型和控制流

    这篇文章主要介绍了详解python中的数据类型和控制流,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • pytorch collate_fn的基础与应用教程

    pytorch collate_fn的基础与应用教程

    这篇文章主要给大家介绍了关于pytorch collate_fn基础与应用的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-02-02
  • 关于PyTorch 自动求导机制详解

    关于PyTorch 自动求导机制详解

    今天小编就为大家分享一篇关于PyTorch 自动求导机制详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 编写Python脚本抓取网络小说来制作自己的阅读器

    编写Python脚本抓取网络小说来制作自己的阅读器

    这篇文章主要介绍了编写Python脚本抓取网络小说来制作自己的阅读器的方法,包括对小说的章节排列等方面的优化,对于Python学习者来说非常具有实践意义!需要的朋友可以参考下
    2015-08-08
  • python tornado修改log输出方式

    python tornado修改log输出方式

    今天小编就为大家分享一篇python tornado修改log输出方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python绘制词云图最全教程(自定义png形状、指定字体、颜色)

    python绘制词云图最全教程(自定义png形状、指定字体、颜色)

    词云图是一种直观的方式来展示文本数据,它易于理解,能展示出词语的频率使用情况,对于文本分析非常有用,这篇文章主要给大家介绍了python绘制词云图(自定义png形状、指定字体、颜色)的相关资料,需要的朋友可以参考下
    2024-05-05
  • Python中plt.imshow(image)无法显示图片的解决

    Python中plt.imshow(image)无法显示图片的解决

    这篇文章主要介绍了Python中plt.imshow(image)无法显示图片的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论