变量作用域

来源:互联网 发布:美萍医药软件 编辑:程序博客网 时间:2024/06/06 17:24

python任何变量都有其特定的作用域

局部变量和全局变量

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

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

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

#!/usr/bin/python#coding:utf8i = 10def fun():    i = 100     print "i = ", ifun()print "-"*20print "i = " , i #因为函数中的i是局部变量所以这里的还是10print "-"*20s1 = "hello world"def fun2():    s2 = " welcome to China"    global s2    print s2print s1+s2 # 这里会报错, 局部变量s2通过global强制声明为全局变量,函数外部使用s2之前, 必须先调用该函数fun2()print "-"*20print s1+s2  # 这里使用s2是可以的

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

python 10.py 10.py:17: SyntaxWarning: name 's2' is assigned to before global declaration  global s2i =  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 s2i =  100--------------------i =  10-------------------- welcome to China--------------------hello world welcome to China
0 0
原创粉丝点击