最近开始学习python 了!
1 python 中使用在函数之外的变量均为全局变量
2 在函数内部使用的变量为局部变量。
之所以今天写关于变量的作用域的笔记,是因为本人在一个小程序中出了错,再次做些总结。
先看下面的程序:
#!/usr/bin
# Filename: func_global.py
def func():
global x
print 'x is', x
x = 5
print 'change x to', x
x = 100
func()
print 'the value of x is', x
该程序的运行结果是:
x is 100
changed x to 5
the value of x is 5
这个程序的理解是没有问题的,问题的关键在于当我把程序做稍许的改动就报错了。我是这样改的将定义函数def func() 改为def func(x)。将调用函数func()改为func(x)。报错的信息是:
name "x" is local and global
这句报错信息究竟是什么意思呢,很明显系统在告诉我们x 既是局部变量又是全局变量,这是矛盾的,所以就报错了。
仔细分析一下便可得知:
首先,在函数外部的变量为全局变量。
程序首先执行的是语句 x = 100(x 是全局变量)
当执行到调用函数func(x)这个语句时,此时,变量x 被传递到func()内部。此时函数内部global x 语句之外的 x 是作为局部变量的,与x 作为全局变量相矛盾了。
简而言之就是:当变量是全局变量的时候,就不要将其作为函数的实参,否则就会出错。