Python中全局变量和局部变量有什么不同

  介绍

这篇文章给大家介绍Python中全局变量和局部变量有什么不同,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

全局变量与局部变量两者的本质区别就是在于作用域

用通俗的话来理解的话,

全局变量是在整个py文件中声明,全局范围内都可以访问

局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就爆掉了

如果在函数内部定义与某个全局变量一样名称的局部变量,就可能会导致意外的效果,可能不是你期望的。因此不建议这样使用,这样会使得程序很不健全

<强>直接来看几个例子来理解全局变量和局部变量的区别吧:

<强> Demo1:

def 有趣的(x):   y=2   ,打印(“乘法的运行结果:“,x * y)   num1=1   print(“初始num1=? num1)   乐趣(num1)   打印(“y的值是:“,y)

运行结果:

 Python中全局变量和局部变量有什么不同

报错的原因是因为试图访问局部变量,但是访问的地方不在该变量y的作用域中

<强>以及接下来:

def 有趣的():   num1=2   ,打印(“函数内修改后num1=? num1)   num1=1   print(“初始num1=? num1)   有趣的()   print(“运行完函数后num1=? num1)

运行结果:

 Python中全局变量和局部变量有什么不同

可以看到在函数内部对全局变量的修改后,在函数执行完毕,修改的结果是无效的,全局变量并不会受到影响

再看:

<强> Demo3:

def 有趣的():   num1 *=2   ,打印(“函数内修改后num1=? num1)   num1=1   print(“初始num1=? num1)   有趣的()   print(“运行完函数后num1=? num1)

运行结果:

 Python中全局变量和局部变量有什么不同

报错了。这是因为在有趣的()函数使用了局部变量num1,它只是个跟全局变量同名的局部变量,使用前还是要赋值,因此再次强调不要这样使用

<强>全球关键字

如果真的想要在函数体内修改全局变量的值,就要使用全球关键字

Demo4:

def 有趣的():   global  num1   num1=2   ,打印(“函数内修改后num1=? num1)   num1=1   print(“初始num1=? num1)   有趣的()   print(“运行完函数后num1=? num1)

运行结果:

 Python中全局变量和局部变量有什么不同

使用全球关键字就是告诉Python编译器这个变量不是局部变量而是全局变量,其实有点像是“引用“的意思

<强>外地关键字

再看看另一个跟变量相关的关键字外地,字面意思就是指当前的这个变量不是局部变量.nonlocal是Python3.0中新增的关键字,python2。x不支持

先来看看下面这段代码

def 有趣的():   num2=3   ,def  fun2 ():   num2 *=2   ,打印(“num2=皀um2)   ,return  fun2 ()   ,   有趣的()

运行结果:

 Python中全局变量和局部变量有什么不同

错误的原因跟前面的差不多,就是使用了未定义的局部变量,然而num2也不是全局变量,只是fun2函数的外层变量,强行使用全球定义num2的话同样会报错(不信你试试)

这时候需要使用外地关键字:

def 有趣的():   num2=3   ,def  fun2 ():   nonlocal  num2   num2 *=2   ,打印(“num2=皀um2)   ,return  fun2 ()   ,   有趣的()

运行结果:

 Python中全局变量和局部变量有什么不同

Python中全局变量和局部变量有什么不同