变量和全局变量-Python基础篇

1、全局变量:声明在函数外面的变量。

2、局部变量:声明这函数内部的变量。

  函数在使用变量时优先使用局部变量,没有局部变量时才会使用全局变量。

  如果想要修改全局变量必须使用关键字:global

#  全局变量
a = 100


def test1():
    # 局部变量
    a = 1
    b = 8
    print('a=', a)  # 使用的是局部变量
    print('b=', b)


test1()
'''
a= 1
b= 8
'''


def test2():
    # 局部变量
    b = 8
    print('a=', a)  # 使用的是全局变量,没声明局部a变量
    print('b=', b)


test2()
'''
a= 100
b= 8
'''


#  如果我们要改变全局变量的值
def test3():
    # a=90
    # print(a)  # 仍然是100
    global a  # 必须使用global
    a = 90
    print(a)  # 90


test3()

 

有些数据类型作为全局变量是可以不用global,也可以这函数内部进行修改的,这就涉及到可变与不可变变量。

1、不可变变量:当改变变量时地址发生了变化。

  类型:int,str,float,bool,tuple

2、可变变量:变量这值发生了改变,但是地址没有变化的。

  类型:list,dict,set

#  不可变变量
a = 100
print(id(a))  # 140712140542736
a = 90
print(id(a))  # 140712140542416

s = 'abc'
print(id(s))  # 2429653660720
s = 'xyz'
print(id(s))  # 2429653742000
print('*-' * 20)
#  可变变量
l1 = [1, 2, 3]
print(id(l1))  # 2974649220160
l1.append(4)
print(id(l1))  # 2974649220160

可变变量可以不用global修改全局变量

book = ['西游记', '红楼梦']


def add_book(s):
    book.append(s)  # 修改了全局变量
    print(book)


add_book("水浒传")  # ['西游记', '红楼梦', '水浒传']

 

posted @ 2021-10-02 17:09  逍遥abin  阅读(153)  评论(0编辑  收藏  举报