您的位置:首页 > 其它

变量作用域

2015-10-01 17:42 274 查看
python任何变量都有其特定的作用域

局部变量和全局变量

在函数内部的变量一般只能在函数内部使用, 这些只能在程序特定的区域使用的变量称为局部变量.

在一个文件顶部,在函数的外部定义的变量, 可以供该文件的任何函数调用, 这样的变量称为全局变量

局部变量和全局变量的关系

局部变量可以通过global关键字强制声明为全局变量.

在函数中用global关键字强制声明为全局变量,在函数外面使用该全局变量之前, 必须先调用该函数, 如下面的例子

#!/usr/bin/python
#coding:utf8

i = 10
def fun():
i = 100
print "i = ", i

fun()
print "-"*20
print "i = " , i #因为函数中的i是局部变量所以这里的还是10
print "-"*20

s1 = "hello world"
def fun2():
s2 = " welcome to China"
global s2
print s2

print s1+s2 # 这里会报错, 局部变量s2通过global强制声明为全局变量,函数外部使用s2之前, 必须先调用该函数
fun2()
print "-"*20
print s1+s2  # 这里使用s2是可以的


以上的代码的输出结果(第20行注释之前的结果):

python 10.py
10.py:17: SyntaxWarning: name 's2' is assigned to before global declaration
global s2
i =  100
--------------------
i =  10
--------------------
Traceback (most recent call last):
File "10.py", line 20, in <module>
print s1+s2 # 这里会报错, 局部变量s2通过global强制声明为全局变量,函数外部使用s2之前, 必须先调用该函数
NameError: global name 's2' is not defined


以上的代码的输出结果(第20行注释之后的结果):

python 10.py
10.py:17: SyntaxWarning: name 's2'
global s2
i =  100
--------------------
i =  10
--------------------
welcome to China
--------------------
hello world welcome to China
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: