Python: 全局变量 & 局部变量的使用
2017-07-10 17:33
417 查看
码Python代码时,想用全局变量,报了错。所以上网查了相关文档,总结出 以下几点 :
函数内部的变量名如果 第一次 出现,且出现在 = 前面,则在该函数内部被视为定义一个局部变量。
函数内部的变量名如果 第一次 出现,且出现在 = 后面,且该变量在全局域中已定义,则这里将引用全局变量(如果此时该变量在全局域中没有定义,则会报错 UnboundLocalError)。
如果变量在 全局域 中和 局部域 中 都 有定义,则默认会使用局部变量。
如果要在函数中给全局变量 赋值,需要用 global 关键字声明。
Output:
代码段_1:
Output:
函数内部的变量名如果 第一次 出现,且出现在 = 前面,则在该函数内部被视为定义一个局部变量。
函数内部的变量名如果 第一次 出现,且出现在 = 后面,且该变量在全局域中已定义,则这里将引用全局变量(如果此时该变量在全局域中没有定义,则会报错 UnboundLocalError)。
如果变量在 全局域 中和 局部域 中 都 有定义,则默认会使用局部变量。
如果要在函数中给全局变量 赋值,需要用 global 关键字声明。
自己写一段代码来验证它:
代码段_0:num = 100 def show(value): print 'id = %s' % id(value) def func_0(): temp = num show(temp) def func_1(): global num show(num) show(num) func_0() func_1()
Output:
id = 30312368 id = 30312368 id = 30312368 Process finished with exit code 0
代码段_1:
num = 100 def show(value): print 'id = %s' % id(value) def func_0(): temp = num show(temp) def func_1(): num += 1 show(num) show(num) func_0() func_1()
Output:
Traceback (most recent call last): id = 28153776 File "/home/user/Desktop/temp.py", line 20, in <module> id = 28153776 4000 func_1() File "/home/user/Desktop/temp.py", line 14, in func_1 num += 1 UnboundLocalError: local variable 'num' referenced before assignment Process finished with exit code 1
成功地印证了上面的四条。
相关文章推荐
- python变量总结: 全局变量、局部变量、类变量、实例变量以及global和nonlocal关键字的使用示例
- python变量之全局变量与局部变量的使用
- 关于DSP中全局变量与局部变量的使用
- 关于DSP中全局变量与局部变量的使用
- (本程序功能:字符串A中找出包含字符串B中所有字符的位置并输出) 在使用全局变量m的时候,输出错误的结果,而用下面局部变量M就没问题。
- python函数中使用全局变量
- 关于DSP中全局变量与局部变量的使用
- python 在函数中使用全局变量的注意事项
- 函数内怎么使用局部变量和全局变量
- 全局变量 局部变量和关键字static和extern的使用
- 关于DSP中全局变量与局部变量的使用
- Android中application 全局变量 && 使用TAB页不能退出的问题
- 全局变量,局部变量,和使用ref
- 全局变量的定义以及函数内怎么使用局部变量和全局变量?
- 关于DSP中全局变量与局部变量的使用
- 关于DSP中全局变量与局部变量的使用
- Python 之 使用全局变量
- 全局变量,局部变量,和使用ref
- Python笔记(2):多参数,全局变量与局部变量,层状作用域,函数式编程,面向对象
- 关于DSP中全局变量与局部变量的使用