Python: 全局变量 & 局部变量的使用

  码Python代码时,想用全局变量,报了错。所以上网查了相关文档,总结出 以下几点

  • 函数内部的变量名如果 第一次 出现,且出现在 = 前面,则在该函数内部被视为定义一个局部变量。
  • 函数内部的变量名如果 第一次 出现,且出现在 = 后面,且该变量在全局域中已定义,则这里将引用全局变量(如果此时该变量在全局域中没有定义,则会报错 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 
id = 28153776
    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,Python,编程)