day4_局部变量和全局变量

一、介绍:

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量意思就是在局部生效的,出了这个变量的作用域,这个变量就失效了

全局变量的意思就是在整个程序里面都生效的,在程序最前面定义的都是全局变量,全局变量如果要在函数中修改的话,需要加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)

猜你喜欢

转载自www.cnblogs.com/once-again/p/9580986.html