天天看點

python之變量的作用域

# 變量的作用域

'''
局部變量
    函數内定義的變量,局部變量,在函數外不能使用

    在函數外定義的變量,函數内可以通路,但是不能更改
全局變量
    在函數内使用 global 直接定義的變量,就是全局變量

    在函數外定義的變量,在函數内使用 使用 global 關鍵字進行聲明,那麼就是全局變量

資料類型分兩種:
    可變資料類型:在函數外定義的變量,在函數内可以使用
        清單,字典
    不可變資料類型:在函數外定義的變量,在函數内隻能通路,不能使用其他操作
'''

# num = 10
# def func():
#     x = num # 在函數内可以擷取函數外部的變量
#     print(num)# 但是不能更改變量
#
# func()
# print(num)
a =10
def func():
    a = 10
    print(locals())
    print(globals())
func()
a +=10
print(a)

# 在函數外使用函數
# globals(): 擷取全局變量
# locals(): 擷取目前作用域的資料

print(globals())


# 為什麼上面的結果不一樣
# 因為目前區域就是全局區域

# 不光變量有作用域,函數也有相同的作用域

def outor():
    print('this is outer function')
    # 在函數内定義的函數 稱為 局部函數,函數外無法使用
    abc = 123
    def inner():
        print('this is inner function')
        print(abc)
    inner()

outor()


           

繼續閱讀