1. 程式人生 > 其它 >變數和全域性變數-Python基礎篇

變數和全域性變數-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("水滸傳")  # ['西遊記', '紅樓夢', '水滸傳']