【Python】局部变量和全局变量需要警惕的两个坑
来源:互联网 发布:单片机 cpu 编辑:程序博客网 时间:2024/06/14 06:56
1. 在函数内部引用全局的变量,有同名局部变量
疏忽了就会出现错误,比如:
#file1.py
var = 1def fun(): print var var = 200print fun() #file2.pyvar = 1def fun(): var = var + 1 return varprint fun()
这两个函数都会报错UnboundLocalError: local variable 'var' referenced before assignment
原因:在未被赋值之前引用的错误。因为在函数的内部,解释器探测到var被重新赋值了,所以var成为了局部变量,但是在没有被赋值之前就想使用var,便会出现这个错误。
解决:在函数内部添加 globals var 但运行函数后全局的var也会被修改。
2. 局部变量同模块某函数同名
locals() 和 globals()
global 和 globals() 是不同的,global 是关键字用来声明一个局部变量为全局变量。globals() 和 locals() 提供了基于字典的访问全局和局部变量的方式
比如:如果函数1内需要定义一个局部变量,名字另一个函数2相同,但又要在函数1内引用这个函数2。
def var(): pass def f2(): var = 'Just a String' f1 = globals()['var'] print var return type(f1) print f2()# Just a String# <type 'function'>
参考:
http://www.jb51.net/article/86766.htm
阅读全文
0 0
- 【Python】局部变量和全局变量需要警惕的两个坑
- python的局部变量和全局变量
- python的全局变量和局部变量
- python的全局变量和局部变量
- python的 局部变量和全局变量
- Python的全局变量和局部变量
- python全局变量和局部变量
- Python全局变量和局部变量
- python局部变量和全局变量
- python全局变量和局部变量
- python全局变量和局部变量
- python局部变量和全局变量
- Python全局变量和局部变量
- python基础:python的局部变量和全局变量
- python 函数的局部变量和全局变量 global
- python对象、引用、全局变量和局部变量的关系
- python中有关函数的全局变量和局部变量
- Python 全局变量 局部变量
- https配置问题,基于西部数码服务器
- iOS 10.3 下使用 Charles抓包证书报错
- “Beginning Python”(七)“matplotlib”
- MapReduce的Shuffle过程详解
- 日志系列--程序日志处理挑战与方案
- 【Python】局部变量和全局变量需要警惕的两个坑
- [ODBC 驱动程序管理器] 驱动程序和应用程序之间的体系结构不匹配 SQLSTATE=IM0014
- 从程序员到项目经理:懂电脑更要懂人脑
- ImportError: pycurl: libcurl link-time version (7.19.7) is older than compile-time version (7.54.1)
- UITableView与UIPageViewController的UIPanGestureRecognizer手势冲突解决办法
- 基本注解
- maven(五) 国内镜像(maven下载慢的解决方法)
- Foxmail之邮件存档
- 二叉树删除节点