一、介绍:
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量意思就是在局部生效的,出了这个变量的作用域,这个变量就失效了
全局变量的意思就是在整个程序里面都生效的,在程序最前面定义的都是全局变量,全局变量如果要在函数中修改的话,需要加global关键字声明,如果是list、字典和集合的话,则不需要加global关键字,直接就可以修改。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中
备注:全局变量少用,有点儿不安全(每个函数都能改),全局变量占内存,一直到最后
实例1-局部变量
name = '小黑' #全局变量,其他函数都可以用
def get_name():
name = '小白' #局部变量
print(name)
get_name()
输出:
小白
实例2-函数找不到变量时,到外面找
name = '小黑' #全局变量,其他函数都可以用
def get_name():
# name = '小白' #局部变量
print(name)
get_name() #调用函数,找不到name时,到外面找name变量
输出:
小黑
实例3:-函数内改变全局变量,需要加global关键字声明(str ,int,元组都要声明下),如果是list、字典和集合的话,则不需要加global关键字
name = '小黑' #全局变量,你在哪个函数里面都可以用
names = []
def get_name():
global name #声明
names.append('hahhah') #字典和列表不需要声明,可直接修改.#str int 元组,需要声明
name = '小白' #自己函数连找不到变量,去外面找。
print('函数里面的name',name)
def get_name2():
print('get_name2',name)
get_name2() #函数不调用,代码不被执行,不然函数仅仅是定义,只有定义,才能生效
get_name()
print('函数外面的name', name)
输出:
get_name2 小黑
函数里面的name 小白
函数外面的name 小白
习题1:
money = 500
def test(consume):
return money - consume #前面money找全局变量,后面传过来的也是500
def test1(money):
return test(money) + money
money = test1(money)
print(money)
习题2:
def test():
global a
a = 5
def test1():
c = a + 5
return c
# test()
res = test1() #函数不调用,不执行
print(res)