# 變量的作用域
'''
局部變量
函數内定義的變量,局部變量,在函數外不能使用
在函數外定義的變量,函數内可以通路,但是不能更改
全局變量
在函數内使用 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()