Python中的全局变量和局部变量?
有两种类型的变量:全局变量和局部变量。全局变量的作用范围是整个程序,而局部变量的作用范围限定在定义它的函数内。
例子
def func():
x = "Python"
s = "test"
print(x)
print(s)
s = "Tutorialspoint"
print(s)
func()
print(x)
输出
在上面的程序中 –
x 是一个局部变量,而 s 是一个全局变量,我们只能在它被定义的函数(上面的 func() 函数)内部访问局部变量,并且尝试在其作用域之外调用局部变量(func() 外部)将会抛出如下错误 –
Python
test
Tutorialspoint
Traceback (most recent call last):
File "main.py", line 9, in <module>
print(x)
NameError: name 'x' is not defined
然而,我们可以在程序中的任何地方调用全局变量,包括在程序中定义的函数(func())中。
局部变量
局部变量只能在其作用域内访问(如上述的func())。例如在下面的程序中,有两个局部变量 – x和y。
示例
def sum(x,y):
sum = x + y
return sum
print(sum(5, 10))
输出
变量 x 和 y 只能在函数 sum() 内部使用,它们在函数外部不存在。因此,试图在其作用域之外使用局部变量可能会引发NameError错误。所以下面的代码明显不会起作用。
File "main.py", line 2
sum = x + y
^
IndentationError: expected an indented block
全局变量
全局变量可以在程序的任何地方使用,因为其作用域是整个程序。让我们通过一个非常简单的例子来理解全局变量。
示例
z = 25
def func():
global z
print(z)
z=20
func()
print(z)
输出
25
20
调用函数 func() 时,全局变量的值会在整个程序中改变。下面的例子展示了局部变量、全局变量和函数参数的组合:
def func(x, y):
global a
a = 45
x,y = y,x
b = 33
b = 17
c = 100
print(a,b,x,y)
a,b,x,y = 3,15,3,4
func(9,81)
print (a)
输出
45 17 81 9
3
从这里开始学习Python:
Python教程