全局变量是在函数外部定义和声明的变量,我们须要在函数内部运用它们。
#这个函数运用全局变量s def f(): print s # 全局作用域 s = "I love Python" f()
输出:
I love Python
假如在函数范围内定义了具有雷同称号的变量,那末它将仅打印函数内给出的值而不是全局值。
# 这个函数有一个与s同名的变量。 def f(): s = "Me too." print s # 全局作用域 s = "I love Python" f() print s
输出:
Me too I love Python
在我们挪用函数f()之前,变量s被定义为字符串“I love Python”。f()中唯一的语句是“print s”语句。由于没有当地s,将运用全局s的值。
问题是,假如我们转变函数f()内部的s值会发作什么?它会影响全局吗?
我们鄙人面的代码中测试它:
def f(): print s # 假如我们鄙人面批评,这个顺序不会显现毛病。 s = "Me too." print s #全局作用域 s = "I love Python" f() print s
输出:
Line 2: undefined: Error: local variable 's' referenced before assignment
为了使上述顺序有用,我们须要运用“global”关键字。假如我们想要举行分派/变动它们,我们只须要在函数中运用全局关键字。打印和接见不须要全局。
Python“假定”我们想要一个局部变量,由于f()内部的赋值,所以第一个print语句抛出此毛病音讯。在函数内部变动或建立的任何变量都是当地的,假如它还没有声明为全局变量。要通知Python,我们要运用全局变量,我们必需运用关键字“global”
如以下示例所示:
# 这个函数修正全局变量's' def f(): global s print s s = "Look for Python" print s #全局作用域 s = "Python is great!" f() print s
输出:
Python is great! Look for Python. Look for Python.
一个很好的例子:
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
输出:
global : 1 Inside f() : 1 global : 1 Inside g() : 2 global : 1 Inside h() : 3 global : 3
相干引荐:《Python教程》
以上就是Python中的全局变量和局部变量的区分(代码详解)的细致内容,更多请关注ki4网别的相干文章!