在python开发中,变量也是有生命周期的,一旦周期结束,程序会自动清理暂用的空间,释放内存,变量分为二者,一种是局部变量,一种是全局变量,二者具体有什么区别呢……python
通常而言在函数内部或者类中声明的变量默认都是局部变量。一旦函数结束,变量的生命周期也会结束,占用的空间会被自动释放。git
1github 2微信 3ide 4函数 5spa 63d 7code 8orm |
def func1(): # 在函数内部定义的变量默认都是局部变量 a = 1 print(a) # 函数结束,局部变量a的生命周期结束
# 因为a是局部变量,而且a的生命周期已经结束,外部再次调用局部变量a,程序会产生异常,崩溃 print(a) |
程序报错:NameError: name ‘a’ is not defined ,缘由:函数内部定义的局部变量只能在函数内部使用。
全局变量和局部变量相反,在函数外部或者类外部声明的变量默认为全局变量。全局变量的生命周期直到程序结束才会结束,比局部变量生命周期更长。
1 2 3 4 5 6 7 8 9 |
a = 2 def func1(): print(a) # 函数结束,局部变量的生命周期结束 # 全局变量直到程序结束,生命周期才结束
func1() # 输出全局变量a print(a) |
输出结果:
1 2 |
2 2 |
1.全局变量的生命周期是直到程序结束,而局部变量生命周期是函数结束;
2.若是须要在函数内部修改全局变量的值,须要在函数内部为该全局变量前面加上 global 关键字, 不然该变量默认为函数内部定义的局部变量,示例代码以下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解忧 @Blog(我的博客地址): shuopython.com @WeChat Official Account(微信公众号):猿说python @Github:www.github.com
@File:python_global.py @Time:2019/10/10 21:00
@Motto:不积跬步无以致千里,不积小流无以成江海,程序人生的精彩须要坚持不懈地积累! """ # 在函数内部定义的变量默认都是局部变量 a = 2 def func1(): # global a # 声明 a 是全局变量,在该函数内部对a的操做就是对全局变量a的操做 a = 1 # 若是没有上一行代码,默认a就是函数内部的局部变量,函数结束,生命周期结束 print(a) # 函数结束,局部变量的生命周期结束
func1() # 输出全局变量a print(a) |
输出结果:
1 2 |
1 2 |
是不上以为很奇怪:为何最后一个值是2,应该是1才对?
由于没有第17行代码的话,默认a只是函数内部的一个普通局部变量,因此函数内部的print函数输出到控制台是1;函数结束,函数内部的局部变量a值生命周期结束,执行fun1函数以后的print函数输出的是全局变量a的值2.
也就是说函数内部对a值得修改并无成功,只有在函数内部,为全局变量加上关键字global声明为全局变量,才能修改为功,取消第17行得注释,控制台输出:
1 2 |
1 1 |
1.注意局部变量和全局变量的生命周期;
2.若是想在函数内部修改全局变量的值,须要加上关键字global;
转载请注明:猿说Python » python局部变量和全局变量