Python全局变量和局部变量(变量作用域)
变量作用域(或称变量的有效范围)是由变量所在的位置决定的,从而形成变量不同的有效范围与生命周期。变量作用域用来决定在程序中有哪些语句可以合法使用这个变量。
在 Python 中,变量根据在程序中所定义的位置,可以分为全局变量和局部变量两种作用范围的变量。
除了在函数内部定义变量,Python 还允许在所有函数的外部定义变量,这样的变量称为全局变量(Global Variable)。
全局变量的默认作用域是整个程序,即全局变量既可以在各个函数的外部使用,也可以在各函数内部使用。全局变量的生命周期是从赋值开始的,一直到整个程序结束。
下面的例子说明了全局变量和局部变量的不同。Python代码如下:
变量 product 在函数外定义,是全局变量,程序中任何位置使用它都可以。
我们可以从以下的例子看出这两者的差别。
【示例1】Python代码如下:
【示例2】如果要在函数内使用全局变量,则必须在该函数内将该变量以 global 赋值,例如下面的代码:
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
在 Python 中,变量根据在程序中所定义的位置,可以分为全局变量和局部变量两种作用范围的变量。
Python全局变量和局部变量
定义在函数内部的变量称为局部变量(Local Variable),它的作用域范围为函数内,也就是出了函数外就无效。除了在函数内部定义变量,Python 还允许在所有函数的外部定义变量,这样的变量称为全局变量(Global Variable)。
全局变量的默认作用域是整个程序,即全局变量既可以在各个函数的外部使用,也可以在各函数内部使用。全局变量的生命周期是从赋值开始的,一直到整个程序结束。
下面的例子说明了全局变量和局部变量的不同。Python代码如下:
def demo(): n = 10 #局部变量n print(product) product = 100 #全局变量product print(demo()) print(n)上述程序代码中变量 n 在函数 demo 中定义,是局部变量,作用域范围在函数 demo() 内,然而程序最后一行代码 print(n) 中使用了局部变量 n,因此程序运行时会提示出错。
变量 product 在函数外定义,是全局变量,程序中任何位置使用它都可以。
Python函数内的全局变量
如果编写的代码中同时有多个相同名称的全局变量与局部变量,Python 会以局部变量为优先。例如,在函数内必须以局部变量为优先;当离开函数时,则会采用全局变量。我们可以从以下的例子看出这两者的差别。
【示例1】Python代码如下:
def fun(): num=10 #函数内局部变量 for i in range(num): print('*',end='') num=30 fun() #根据局部变量所定义的个数输出符号 print() for i in range(num): #根据全局变量所定义的个数输出符号 print('*',end='')输出结果:
**********
******************************
【示例2】如果要在函数内使用全局变量,则必须在该函数内将该变量以 global 赋值,例如下面的代码:
def fun(): global num #说明在函数内使用的num变量是全局变量 for i in range(num):#根据全局变量所定义的个数输出符号 print('*',end='') num=50 #在函数内将全局变量的值改为50 num=30 for i in range(num): #根据全局变量所定义的个数输出符号 print('*',end='') print()#换行 fun() #调用函数 print()#换行 for i in range(num): #全局变量的值已变为50,依此数字输出符号 print('*',end='')输出结果:
******************************
******************************
**************************************************
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。