本文摘自php中文网,作者藏色散人,侵删。

全局变量是在函数外部定义和声明的变量,我们需要在函数内部使用它们。
1 2 3 4 5 6 7 | #这个函数使用全局变量s
def f():
print s
# 全局作用域
s = "I love Python"
f()
|
输出:
如果在函数范围内定义了具有相同名称的变量,那么它将仅打印函数内给出的值而不是全局值。
1 2 3 4 5 6 7 8 9 | # 这个函数有一个与s同名的变量。
def f():
s = "Me too."
print s
# 全局作用域
s = "I love Python"
f()
print s
|
输出:
在我们调用函数f()之前,变量s被定义为字符串“I love Python”。f()中唯一的语句是“print s”语句。由于没有本地s,将使用全局s的值。
问题是,如果我们改变函数f()内部的s值会发生什么?它会影响全局吗?
我们在下面的代码中测试它:
1 2 3 4 5 6 7 8 9 10 11 12 | def f():
print s
# 如果我们在下面评论,这个程序不会显示错误。
s = "Me too."
print s
#全局作用域
s = "I love Python"
f()
print s
|
输出:
1 | Line 2: undefined: Error: local variable 's' referenced before assignment
|
为了使上述程序有效,我们需要使用“global”关键字。如果我们想要进行分配/更改它们,我们只需要在函数中使用全局关键字。打印和访问不需要全局。
Python“假设”我们想要一个局部变量,因为f()内部的赋值,所以第一个print语句抛出此错误消息。在函数内部更改或创建的任何变量都是本地的,如果它尚未声明为全局变量。要告诉Python,我们要使用全局变量,我们必须使用关键字“global”
如以下示例所示:
1 2 3 4 5 6 7 8 9 10 11 | # 这个函数修改全局变量 's'
def f():
global s
print s
s = "Look for Python"
print s
#全局作用域
s = "Python is great!"
f()
print s
|
输出:
1 2 3 | Python is great!
Look for Python.
Look for Python.
|
一个很好的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | a = 1
# 使用 global ,因为没有本地 'a'
def f():
print 'Inside f() : ' , a
#变量“a”被重新定义为局部变量
def g():
a = 2
print 'Inside g() : ' ,a
#使用全局关键字修改全局 'a'
def h():
global a
a = 3
print 'Inside h() : ' ,a
# 全局作用域
print 'global : ' ,a
f()
print 'global : ' ,a
g()
print 'global : ' ,a
h()
print 'global : ' ,a
|
输出:
1 2 3 4 5 6 7 | global : 1
Inside f() : 1
global : 1
Inside g() : 2
global : 1
Inside h() : 3
global : 3
|
相关推荐:《Python教程》
以上就是Python中的全局变量和局部变量的区别(代码详解)的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
eval在Python什么意思
Python异常与错误区别
Python安装库安装失败怎么解决
flask-migrate扩展的用法介绍(附代码)
Python统计字符个数
Python 列表删除所有指定元素
Python中的super函数如何实现继承?
Python中的控制结构有哪些
Python中str是什么
Python字符串如何拼接
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » Python中的全局变量和局部变量的区别(代码详解)