Python变量学习-认识全局变量和局部变量

学习Python的过程中少不了用到变量,在日常的编写程序的过程中,每时每刻都在使用变量,

问:什么是变量

答:变量是可以改变的数,通常没有固定的值

问:有几种变量

答:变量分为2种形式,即:全局变量和局部变量

名词解释:

  全局变量:顾名思义全局变量,作用域在整个文件中任何地方都可以使用的变量

  局部变量:顾名思义,作用域的范围没有全局变量那么大,他的作用域有可能在一个函数体内,也有可能在一个复合函数内

如何定义这两种变量

  全局变量:

 1 #定义一个全局变量
 2 age = 12
 3 
 4 #为了区分全局变量和局部变量,特意写一个函数
 5 def test():
 6     print('在函数内打印的',age)
 7 #执行函数
 8 test()
 9 
10 print('在函数外面打印的',age)
在函数内打印的 12
在函数外面打印的 12

看上面代码运行的结果和代码,我在第2行代码定一个一个变量名为age的变量,这个变量可以理解成是全局变量,仔细看下,这个名为age的变量我既可以在test这个函数中使用,同时也可以在这个函数外使用,这也就是我上面说的作用域为整个文件的任何地方。

  局部变量:

1 #为了区分全局变量和局部变量,特意写一个函数
2 def test():
3     #定义的一个局部变量
4     age = 12
5     print('在函数内打印的',age)
6 #执行函数
7 test()
8 
9 print('在函数外面打印的',age)
Traceback (most recent call last):
在函数内打印的 12
  File "/Users/dark/PycharmProjects/Study/changec.py", line 17, in <module>
    print('在函数外面打印的',age)
NameError: name 'age' is not defined

这次是定义的一个局部变量,看下执行结果显然的报了一个错误,在看下代码,这次我在test这个函数内定义了一个age,我直接打印,在看下面的运行结果正常打印,接着看下我在第9行代码打印的age,显然运行出错,并且提示“name 'age' is not defined”(名字为age没有找到),出现这个错误的原因就是我上面说的作用域的问题。

总结:在函数外面定义的变量,称之为全局变量,函数内定义的变量称之为局部变量,全局变量可以在函数内使用,但是函数内定义的局部变量不可以在函数体外使用

变量修改:

 1 #定义一个全局变量
 2 age =12;
 3 #为了区分全局变量和局部变量,特意写一个函数
 4 def test():
 5     #定义的一个局部变量
 6     age = 25
 7     print('在函数内打印的',age)
 8 #执行函数
 9 test()
10 
11 print('在函数外面打印的',age)
在函数内打印的 25
在函数外面打印的 12

讲解到关闭变量修改值的问题。比如上述代码,我定义一个全局变量,我在test函数内定义一个局部变量,那么我在函数内打印的age会不会和在函数外打印的age的值是一样的呢?

这个显然不是的,看下代码和运行结果我定义的全局变量在函数外面打印的是12,而在函数内打印的是25,Why?为什么会这样。这个问题又牵扯到我刚才说的作用域的问题,如果在函数内和函数外定义一个变量名相同的变量(也就是说我定义一个全局变量和局部变量相同名字的变量),打印的时候按照什么原则打印呢?是按照的就近原则打印的。如果在函数内打印,首先会在函数内寻找有没有一个名字叫做age的变量,如果有打印,如果没有在寻找有没有全局变量的名字叫做age,变量存在,打印,不存在则报错。

再回到我刚才所说的那样变量修改,

问:那是不是我定义一个全局变量,我想在一个函数内修改是不是就不能修改呢?

答:肯定不是的,那么如何在函数内修改全局变量呢?

这个需要用到一个指定符(谁知道这玩意叫啥,我随口说的)global来指定变量是全局的,看操作如何使用

 1 #定义一个全局变量
 2 age =12;
 3 #为了区分全局变量和局部变量,特意写一个函数
 4 def test():
 5     #定义的一个局部变量
 6     global age
 7     age = 25
 8     print('在函数内打印的',age)
 9 #执行函数
10 test()
11 
12 print('在函数外面打印的',age)
在函数内打印的 25
在函数外面打印的 25

Look,通过global指定age为全局值,通过第7行代码的修改变量值,经过输出,输出值都是25,这个就是在函数内修改全局变量的值。

好,全局变量和局部变量的教程到此,谢谢大家观看

猜你喜欢

转载自www.cnblogs.com/mCarrYoung/p/9953483.html