Python全局变量的隐藏“窍门”

uniapp:K线图,支持H5,APP K线,1分钟搞定。备注详细,无需理解,直接复制即可。 阅读详情

Python全局变量是不符合参数传递的相关规律,所以很多人不愿意经常使用,除非在定义常量的情况下。一下要讨论的是关于全局变量的相关问题,发现其中隐藏的窍门。希望大家通过这篇文章有所收获。

程序大致是这样的:

  1. CONSTANT = 0 
  2.  
  3. def modifyConstant() :  
  4.         print CONSTANT  
  5.         CONSTANT += 1  
  6.         return  
  7.  
  8. if __name__ == '__main__' :  
  9.         modifyConstant()  
  10.         print CONSTANT  
  11.  

运行结果如下:
UnboundLocalError: local variable 'CONSTANT' referenced before assignment看来,Python全局变量在函数modifyConstant中边成了局部变量,似乎全局变量没有生效?
做点修改:

  1. CONSTANT = 0 
  2.  
  3. def modifyConstant() :  
  4.         print CONSTANT  
  5.         #CONSTANT += 1  
  6.         return  
  7.  
  8. if __name__ == '__main__' :  
  9.         modifyConstant()  
  10.         print CONSTANT  
  11.  

运行正常,看来函数内部是可以访问全局变量的。
所以,问题就在于,因为在函数内部修改了变量CONSTANT,Python认为CONSTANT是局部变量,而print CONSTANT又在CONSTANT += 1之前,所以当然会发生这种错误。那么,应该如何在函数内部访问并修改Python全局变量呢?应该使用关键字global来修饰变量(有点像PHP):

  1. CONSTANT = 0 
  2.  
  3. def modifyConstant() :  
  4.         global CONSTANT  
  5.         print CONSTANT  
  6.         CONSTANT += 1  
  7.         return  
  8.  
  9. if __name__ == '__main__' :  
  10.         modifyConstant()  
  11.         print CONSTANT  
  12.  

如果你对其也有相关不解的亦或时,不妨浏览一下上述解答方案,是你对其有更好的了解,在实际应用中能够畅通应用。

AUTOSAR从入门到精通-诊断事件管理模块(DEM)(四) 在 Autosar 中,诊断事件是指在车辆电子系统中发生的特定事件,可以用于诊断和故障排除。DEM模块通过EventId和相关的EventName来表示每个诊断事件。诊断事件的状态代表了监控器的结果,DEM模块通过RTE或其他BSW模块从SW-C接收监控器的结果。DEM模块使用EventId来管理系统中每个诊断事件的状态,并对各个测试结果执行所需的操作,例如存储冻结帧/拓展帧。所有监控器和BSW模块使用EventId作为符号化的EventName来管理诊断事件。 阅读详情

相关推荐

别再死记硬背了!用LabVIEW串口通信的3个真实项目案例,手把手教你从调试到部署

本文通过3个真实项目案例,详细讲解LabVIEW串口通信从调试到部署的全过程。涵盖Arduino温湿度监控、西门子PLC Modbus通信以及高可靠性通信框架设计,提供实用技巧和常见问题解决方案,帮助工程师快速掌握LabVIEW串口通信的实战应用。

weixin_30485379的博客 523

Python入门--python中的global,legb,变量作用域,nonlocal

#global关键字 #Python变量的作用域一共有四种分别是: # L(Local)局部作用域 # E(Enclosing)闭包函数外的函数中 # G(Global)全局作用域 #B(Built-in)内建作用域 #以L-->E-->G-->B规则查找 # 即在局部找不到,便会去局部外的局部找(例如闭包) #,再找不到就回去全局找,最后去内建中找 ''' 实例一 ''' x=5#全局变量 def funa(): x=4#局部变量 print(x) def funb().

周周的博客 1191

Unity动态创建Avatar骨骼映射

Unity Avatar骨骼映射动态创建,适配Unity通用动画,无需经过第三方建模软件,可运行时创建

Nbin_Newby的博客 1万+

Python全局变量的隐藏“窍门”(CONSTANT,global)

source:http://developer.51cto.com/art/201003/187662.htm 2010-03-09 14:12 佚名 移动LABS 我要评论(0) 字号:T | T Python全局变量的程序介绍,是相关人士更好了解其内在规律,以及Python全局变量的运行结果的详细介绍,以及如何访问Python全局变量。 AD:2013

tech 1855

网络摄像头(IPC)介绍:类型、供电、镜头、夜视等

IPC(Internet Protocol Camera,网络摄像头),它是一种由传统摄像机与网络技术结合所产生的新一代摄像机。它可以将视频、音频、报警及控制信号通过网络传输,接受网络监控主机(NVR或监控管理平台)的管理。IPC可与路由器、交换机、NVR等设备组建成为监控系统。

学无止境,Fighting! 1万+

避坑指南:RK3588视频编码与SRT推流实战中,我遇到的5个典型问题及解决方案

本文深度解析RK3588平台视频编码与SRT推流实战中的五个典型问题,包括MIPI摄像头内存对齐、多线程数据传递、FFmpeg时间戳设置、SRT连接参数调优及系统资源监控。提供具体解决方案和优化技巧,帮助开发者高效实现实时视频网络传输。

weixin_28718793的博客 322

chatgpt赋能python:Python隐藏变量:探秘程序内部的“奥秘”

在Python中,所有以下划线(_)开头的变量和方法都被视为“隐藏变量”,即程序员不希望外部调用的变量和方法。Python隐藏变量是一种封装机制,帮助程序员掌控程序的运行过程,防止意外调用和修改程序内部的数据和方法。具体而言,Python隐藏变量有两种类型:单下划线开头的变量和方法,以及双下划线开头的变量和方法。其中,单下划线开头的变量和方法为Python约定俗成的命名规范,通常表示这些变量和方法为程序内部使用,不建议外部调用。

www_xuhss_com的博客 623

最优化学习笔记1——关于拟牛顿法推导

从2020年3月份到现在,一年的时间里断断续续自学最优化,结合豆瓣读书、知乎等网站上的推荐,翻阅了以下书和课程: Stephen Boyd和Lieven Vandenberghe的《Convex Optimization》,这本书被公认为学习凸优化的必读经典著作,其中大量的篇幅讲应用,讲理论和算法的篇幅稍少一些。在B网站上有Boyd的视频课程,油管上也有,不过只有英文字幕,如果是零基础接触,直接看Boyd的视频稍显费劲,B站上也有凌青老师以《Convex Optimization》为教材的讲解,推荐作为入

xiaofei473的博客 1768

pycharm debug的时候变量显示不出来,一直Collecting data...问题解决

pycharm debug的时候变量显示不出来,一直Collecting data...问题解决

weixin_44609958的博客 1966

基于Multisim的三相桥式全控整流电路建模、仿真与综合分析

本文基于Multisim 14.2平台,系统研究了三相桥式全控整流电路的建模与仿真方法。首先阐述了电路拓扑结构和工作原理,建立了数学模型。重点介绍了在Multisim中搭建主电路、设计六脉冲触发系统(含两种实现方案)的关键步骤,以及参数设置技巧。通过仿真分析了不同负载(阻性、阻感性)和触发角(0°-90°)下的输出特性,包括电压波形、电流谐波等性能指标。研究为电力电子教学提供了直观的仿真范例,并探讨了模型改进方向与实际工程应用价值。

huanghm88的专栏 353

断层错动和近断层地震动联合作用下软岩隧洞衬砌损伤分析

摘要 本文提出了一种基于Python的软岩隧洞衬砌损伤分析系统,重点研究断层错动和近断层地震动的联合作用效应。系统采用有限元方法建立隧洞-围岩体系模型,通过非线性动力分析评估衬砌结构损伤。研究内容包括:1)建立考虑应变软化的软岩本构模型;2)基于位错理论模拟断层错动过程;3)合成具有速度脉冲效应的近断层地震动;4)开发完整的动力响应分析流程。结果表明,所提出的方法能有效评估软岩隧洞在复杂地质条件下的抗震性能,为工程设计提供理论依据。 关键词:软岩隧洞、断层错动、近断层地震动、损伤分析、Python、有限元法

max500600的博客 842

python3中的缺省参数和global

关于py中缺省参数: 在声明函数的时候对某些参数(一个或多个)进行赋值,在你调用的时候无需在实参列表中体现该参数,但是在执行的时候会默认加上这个已经在形参中定义好的参数。 但是,缺省参数必须放在最后,缺省参数的值必须是常量。 举个例子: def sum(a,b): print("%d+%d=%d"%(a,b,a+b)) sum(11,22) sum(13,22) sum(15...

peng_for_csdn的博客 486

UG\NX二次开发 使用UF_CURVE_create_ocf_feature函数创建“在面上偏置”特征

使用UF_CURVE_create_ocf_feature函数创建“在面上偏置”特征。

王牌飞行员_里海的博客 849

python种局部变量和全局变量之隐藏机制

python种局部变量和全局变量之隐藏机制 函数中可以访问全局变量但是还有个隐藏机制会始报错 x=5 def f(): x=10 #若是局部变量赋值与全局变量相同 此时用的是局部变量,因为当局部变量和全局变量具有相同的变量名时 全局变量被隐藏了 return x print(f())#结果是10 x=5 def f(): x=10*x #报错 未被赋值的引用错误 是...

CH3C00H的博客 2992

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python全局变量和局部变量可以同名吗_Python global

Python global使用教程如果局部变量隐藏了全局变量,那么当我们再次访问全局变量时,程序会报错,会说找不到该变量,因为,该全局变量被局部变量隐藏了。Python变量重名详解语法varname = valuedef func():print(varname)varname = value2func()print(varname)说明首先,我们定义了一个全局变量 varname,接着,我们定义...

weixin_39866963的博客 5846

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python怎么使用全局变量

一、单模块的全局变量 1、在函数外部定义x = 6 2、在函数内部再次定义global x x = 6 def func(): global x #定义外部的x x = 1 func() print (x) #输出1 如果没有在函数内部global修饰,那么会在函数内部定义一个同名局部变量并隐藏掉同名全局变量。 二、多线程、跨模块的全局变量 为全局变量定义一个“全局变量管理模块”,下面主要创建了4个文件 # main.py import threading import os impo

Jan___的博客 6742

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

如何优雅处理 Python 中的全局变量?

全局变量不是禁区,而是需要被“设计”的资源。封装、隔离、控制访问,才是处理全局变量的最佳姿势。从模块级单例、类封装到线程安全机制,都是避免“全局污染”的有效手段。

测试者家园 1288

【从零学习python 】28. Python中的局部变量和全局变量

这篇文章介绍了Python中的局部变量和全局变量的概念和区别。局部变量是在函数内部定义的变量,其作用范围只限于函数内部,而全局变量则可以在所有函数中使用。文章详细解释了局部变量和全局变量的作用、使用方法以及如何修改全局变量的值。此外,还介绍了如何查看所有的全局变量和局部变量,并讨论了函数返回多个值的方式和对返回数据的拆包操作。最后,给出了一些相关的技术标签,方便读者更好地理解和学习Python中的变量作用域。

全栈若城,专注知识分享 8501

Python在函数中使用全局变量的问题

在函数中定义的局部变量如果和全局变量同名,则它会隐藏该全局变量。如果想在函数中使用全局变量,则需要使用global进行声明。举例说明如下: x = 1 def func(): x = 2 print x print x func() print x 执行结果为: 1 2 1 x = 1 def func(): global x pr

Warren_Hoo的专栏 1万+

在函数中使用全局变量

如何在函数中创建或使用全局变量?如何使用在其他函数中的一个函数中定义的全局变量?

HuntsBot的博客 5859

global在python_在Python中使用“global”关键字

在Python中使用“global”关键字我从阅读文档中了解到,Python有一个单独的函数命名空间,如果我想在该函数中使用全局变量,我需要使用global。我正在使用Python 2.7,我尝试了这个小测试>>> sub = ['0', '0', '0', '0']>>> def getJoin():... return '.'.join(sub).....

weixin_39973271的博客 373

python3 全局变量_如何正确使用Python 3中的全局变量?

如果使用全局变量的方式可能会被解释为对局部变量的赋值,则需要在函数中使用全局关键字。如果没有全局关键字,您将创建一个局部变量,它隐藏函数范围中的全局变量。以下是几个例子:global_var = 1def example1():# global keyword is not needed, local_var will be set to 1.local_var = global_vardef e...

weixin_39624774的博客 709

python eval函数 递归函数 嵌套函数 内部函数 数据隐藏 nonlocal和global LEGB规则

** 1,eval()函数 将字符串str当成有效的表达式来求值,并返回计算结果 ** 语法为: eval(source[,globals [,locals]]) —>value source :一个python表达式 或者 函数 compile()返回的代码对象 globals:可选 必须是dictionary locals:可选 任意映射对象 s = "print('abc')" ev...

嘎嘎_哈 524

python中的全局变量和局部变量的使用

@TOC 变量的作用域(全局变量和局部变量) 变量起作用的范围称为变量的作用域,不同作用域内同名变量之间互不影响。变量分为:全局变量、局部变量。 全局变量: 1.在函数和类定义之外声明的变量。作用域为定义的模块,从定义位置开始直到模块结束。 2.全局变量降低了函数的通用性和可读性。应尽量避免全局变量的使用。 3.全局变量一般做常量使用。 4.函数内要改变全局变量的值,使用global声明一下 局部变量: 1.在函数体中(包含形式参数)声明的变量。 2.局部变量的引用比全局变量快,优先考虑使用。 3.如果局部

每天都要进步的博客 1560

python 函数中全局变量和局部变量,return,参数注意事项

全局变量和局部变量 当函数内出现局部变量和全局变量相同名字时,函数内部中的变量名 = 数据此时理解为定义了一个局部变量,而不是修改全局变量的值 如果在函数中出现global 全局变量的名字那么这个函数中即使出现和全局变量名相同的变量名 = 数据也理解为对全局变量进行修改,而不是定义局部变量,gloal a,b return return除了能够将数据返回之外,还有一个隐藏的功能:结束函数 return后面可以是元组,列表、字典等,只要是能够存储多个数据的类型,就可以一次性返回多个数据。如果r...

lian740930980的博客 1604

【Python】全局变量与init的区别

总的来说,全局变量在某些情况下可能是有用的,例如,对于跨多个函数和类共享的常量。然而,为了更好的封装和代码组织,通常建议尽可能地在类的。方法中初始化数据,这样可以利用面向对象编程的所有优势,包括封装、继承和多态。一个脚本里,设置全局变量,和初始化类时__init__中加载,有什么区别?在Python脚本中,使用全局变量和在类的。

littlemichelle 681
上一篇: gdb 多线程调试
下一篇: 字符编码详解——彻底理解掌握编码知识,“乱码”不复存在
执迷的信徒
博客等级 码龄16年 245粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值