网站推广.NET

网站推广.NET

Python中的全局变量和局部变量的区别(代码详解)

来源:互联网

全局变量是在函数外部定义和声明的变量,我们需要在函数内部使用它们。

#这个函数使用全局变量sdef f():      print s    # 全局作用域s = "I love Python"f()

输出:

立即学习“Python免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

I love Python

如果在函数范围内定义了具有相同名称的变量,那么它将仅打印函数内给出的值而不是全局值。

# 这个函数有一个与s同名的变量。def f():      s = "Me too."    print s    # 全局作用域s = "I love Python" f() print s

输出:

立即学习“Python免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

Me tooI 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

输出:

立即学习“Python免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

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免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

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

输出:

立即学习“Python免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

global :  1Inside f() :  1global :  1Inside g() :  2global :  1Inside h() :  3global :  3

相关推荐:《Python教程》

全局变量和局部变量的区别