1. 程式人生 > >python 第二十四篇 全域性變數和區域性變數的作用域

python 第二十四篇 全域性變數和區域性變數的作用域

#變數的作用域:是指一個變數所產生的作用範圍,也就是說在哪一個範圍內變數能夠被直譯器所識別。
#變數分為:全域性變數 和 區域性變數


#全域性變數:一般宣告在函式的外部。
#全域性變數的作用域:整個.py檔案內都可以使用,都可以被識別。


#區域性變數:一般宣告在函式的內部。
#區域性變數的作用域:只能在函式的內部使用,超出範圍,變數就不能再使用


#list1相當於全域性變數,作用域是整個.py檔案
list1=[]
def add_test():
    #a:區域性變數,只能在函式內部使用
    a = 1
    list1.append(a)
    print('區域性變數:%s'%a)
    print(list1)
add_test()
list1.append(2)
print('全域性變數:%s'%(list1))
# print(a)


name = '張三'
def show_name():
    #預設情況下,如果全域性變數和區域性變數名相同,在函式內部是無法識別到函式外部的全域性變數的。
    #local variable 'name' referenced before assignment:區域性變數在宣告之前被引用(先引用後宣告的錯誤)
    #因為變數的引用的時候,會採取就近原則。會看最近的變數在哪,發現最近的變數是name='李四',但是提取使用了name這個變數,然後再聲明瞭name='李四'。所以出現了先引用後宣告的錯誤。
    #global:將一個已經宣告好的全域性變數在函式內部重新宣告,可以避免和同名的區域性變數重名。
    global name
    print('姓名:%s'%name)
    name='李四'
    print('姓名_1:%s'%name)
show_name()