python全局变量引用与修改过程解析

 更新时间:2020-01-07 22:10:56   作者:佚名   我要评论(0)

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

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

一、引用

使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字。如:

#! /usr/bin/pythona = 1b = [2, 3]def func():  if a == 1:    print("a: %d" %a)  for i in range(4):    if i in b:      print("%d in list b" %i)    else:      print("%d not in list b" %i)if __name__ == '__main__':  func()

输出结果:

果博东方可以看出,无论是列表还是变量,都是可以直接引用的。

二、修改

果博东方使用到的全局变量,需要在函数中修改的话,就涉及到歧义问题,如:

#! /usr/bin/pythona = 1b = [2, 3]def func():  a = 2  print "in func a:", a  b[0] = 1  print "in func b:", bif __name__ == '__main__':  print "before func a:", a  print "before func b:", b  func()  print "after func a:", a  print "after func b:", b

输出结果:

可以看出,对于变量a,在函数func中"a = 2",因为存在既可以表示引用全局变量a,也可以表示创建一个新的局部变量的歧义,所以python默认指定创建一个新的局部变量来消除这一歧义,但对于列表b而言,"b[0] = 1"不存在这种歧义,因此直接修改了全局变量,但是如果改成了"b = [3, 4]",那么b也会变成局部变量。特别地,当在func中a = 2之前加入"if a == 1:"这一语句,脚本运行出错,因为这一语句引入了全局变量,导致了"a = 1"这一语句无法创建同名的局部变量。

因此,需要修改全局变量a,可以在"a = 2"之前加入global a声明,如:

#! /usr/bin/pythona = 1b = [2, 3]def func():  global a  a = 2  print "in func a:", a  b[0] = 1  print "in func b:", bif __name__ == '__main__':  print "before func a:", a  print "before func b:", b  func()  print "after func a:", a  print "after func b:", b

输出结果:

结论:引用全局变量,不需要golbal声明,修改全局变量,需要使用global声明,特别地,列表、字典等如果只是修改其中元素的值,可以直接使用全局变量,不需要global声明。结论:引用全局变量,不需要golbal声明,修改全局变量,需要使用global声明,特别地,列表、字典等如果只是修改其中元素的值,可以直接使用全局变量,不需要global声明。

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

您可能感兴趣的文章:

  • python 多进程共享全局变量之Manager()详解
  • 解析python的局部变量和全局变量
  • Python 进程之间共享数据(全局变量)的方法
  • 浅谈Python 多进程默认不能共享全局变量的问题
  • python通过配置文件共享全局变量的实例
  • python进阶之多线程对同一个全局变量的处理方法
  • Python global全局变量函数详解
  • Python全局变量与局部变量区别及用法分析
  • Python跨文件全局变量的实现方法示例

果博东方相关的文章

  • python全局变量引用与修改过程解析

    python全局变量引用与修改过程解析

    这篇文章主要介绍了python全局变量引用与修改过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下一、引
    2020-01-07
  • pytorch加载自定义网络权重的实现

    pytorch加载自定义网络权重的实现

    在将自定义的网络权重加载到网络中时,报错:AttributeError: 'dict' object has no attribute 'seek'. You can only torch.load from a file that is seekable. P
    2020-01-07
  • python enumerate内置函数用法总结

    python enumerate内置函数用法总结

    这篇文章主要介绍了python enumerate内置函数用法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 enu
    2020-01-07
  • python模拟实现斗地主发牌

    python模拟实现斗地主发牌

    题目:趣味百题之斗地主扑克牌是一种非常大众化的游戏,在计算机中有很多与扑克牌有关的游戏。例如,在Windows操作系统下自带的纸牌、红心大战等。在扑克牌类的游戏
    2020-01-07
  • Laravel5.1 框架表单验证操作实例详解

    Laravel5.1 框架表单验证操作实例详解

    本文实例讲述了Laravel5.1 框架表单验证操作。分享给大家供大家参考,具体如下:当我们提交表单时 通常会对提交过来的数据进行一些验证、Laravel在Controller类中使
    2020-01-07
  • Python内置数据类型list各方法的性能测试过程解析

    Python内置数据类型list各方法的性能测试过程解析

    这篇文章主要介绍了Python内置数据类型list各方法的性能测试过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以
    2020-01-07
  • PyTorch中的Variable变量详解

    PyTorch中的Variable变量详解

    一、了解Variable顾名思义,Variable就是 变量 的意思。实质上也就是可以变化的量,区别于int变量,它是一种可以变化的变量,这正好就符合了反向传播,参数更新的属
    2020-01-07
  • VMwarea虚拟机安装win7操作系统的教程图解

    VMwarea虚拟机安装win7操作系统的教程图解

    VMwarea的安装过程就不演示了,主要看看如何装入win7镜像1、下载win7镜像链接: http://pan.baidu.com/s/1Kht7v0IFtF_p7holFyME0A提取码: hk9m2、下载完成后运行
    2020-01-07
  • Pytorch 中retain_graph的用法详解

    Pytorch 中retain_graph的用法详解

    用法分析 在查看SRGAN源码时有如下损失函数,其中设置了retain_graph=True,其作用是什么? ############################ # (1) Update D network: maximi
    2020-01-07
  • Laravel5.1 框架数据库操作DB运行原生SQL的方法分析

    Laravel5.1 框架数据库操作DB运行原生SQL的方法分析

    本文实例讲述了Laravel5.1 框架数据库操作DB运行原生SQL的方法。分享给大家供大家参考,具体如下:Laravel操作数据库有三种:DB原生SQL、构建器、Model。这三种依情
    2020-01-07

最新评论