龙空技术网

二十三、Python变量作用域(局部变量和全局变量)

数据致美 128

前言:

今天你们对“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()

全局变量与局部变量在数据量很大情况下局部变量效率高

下节预告:lambda表达式和匿名函数

标签: #python局部变量的作用域