前言:
今天你们对“python局部变量的作用域”可能比较珍视,你们都需要剖析一些“python局部变量的作用域”的相关知识。那么小编也在网络上收集了一些关于“python局部变量的作用域””的相关资讯,希望同学们能喜欢,姐妹们一起来了解一下吧!在Python中,变量的作用域指的是变量起作用的范围,不同的作用域内,虽然变量的名字相同,但是它们互不影响。变量按照作用域范围可分为局部变量和全局变量。
全局变量
全局变量是在函数定义和类的定义的外面声明的变量。其作用域为定义的模块,从定义开始直到模块结束。全局变量的主要功能和特点如下:
全局变量降低了函数的通用性和可读性。应当尽量避免使用全局变量。全局变量一般用来定义常量;如果要想在函数内部使用或改变全局变量的值,需要使用global关键字声明一下。
movie_name ='射雕英雄传' #定义全局变量movie_namedef movie(): # 未用global声明会报错(因为下面使用了global会对这里有影响) # movie_name='大红灯笼高高挂' #SyntaxError: name 'movie_name' is assigned to before global declaration # 使用前也要global声明 #print(movie_name) # SyntaxError: name 'movie_name' is used prior to global declaration global movie_name # 如果要想在函数movie()中改变全局变量的值,需要增加global关键字声明 print(movie_name) # 返回:射雕英雄传 movie_name='天龙八部'# 调用函数movie()print(movie_name) #返回天龙八部
局部变量
在函数体内或者函数的形参声明的变量均为局部变量, 局部变量的作用域与特点:
局部变量的引用比全局变量要快,效率要高,因此,优先使用局部变量;如果局部变量和全局变量同名,则在函数体隐藏全局变量,只使用同名的局部变量
局部变量和全局变量性能测试
import mathimport timedef global_varible_test(): start = time.time() for i in range(100000000): math.sqrt(20) #全局变量调用 end = time.time() print(f'全局变量耗时{end-start}秒')def local_varible_test(): f = math.sqrt #局部变量定义 start = time.time() for i in range(100000000): f(20) #局部变量调用测试 end = time.time() print(f'局部变量耗时{end-start}秒')# 全局调用global_varible_test()# 局部变量调用测试local_varible_test()
标签: #python局部变量的作用域