最近沉寂的太久了,只為了給大家準備這一套試題,這大概是全網最全面的了,各位學這麼久Python,檢驗學習成果的時間到了!! 話不多說我們直接開始把! 一、填空題 001、Python安裝擴展庫常用的工具是lxx__lxx__和conda,其中後者需要安裝Python集成開發環境Anaconda3之後 ...
命名空間是從名稱到對象的映射,大部分的命名空間都是通過 Python 字典來實現的
命名空間查找順序:局部命名空間、全局命名空間、內置命名空間
相同的對象名稱可以存在於多個命名空間中
作用域就是一個可以直接訪問命名空間的正文區域。程式的變數並不是在哪個位置都可以訪問的,訪問許可權決定於這個變數是在哪裡賦值的。變數的作用域決定了在哪一部分程式可以訪問哪個特定的變數名稱。python的作用域共有四種:
L(Local):最內層,包含局部變數,比如一個函數/方法內部
E(Enclosing):包含了非局部也非全局的變數。比如兩個嵌套函數中間的變數
G(Global):當前腳本的最外層,比如當前模塊的全局變數
B(Built-in):包含了內建的變數/關鍵字等,最後被搜索(通過builtins標準模塊實現,要先導入)
規則順序:L、E、G、B
python中只有模塊、類、函數才會引入新的作用域,其它的代碼塊(如 if/elif/else/、try/except、for/while等)不會引入新的作用域,這些語句內定義的變數,外部也可以訪問
例如:
def aFunction(): a = 1 return a print(a)
結果會報錯:
print(a) NameError: name 'a' is not defined
例如:
if True: a = 1 print(a)
結果不會報錯:
1
全局變數和局部變數
定義在函數內部的變數擁有一個局部作用域,定義在函數外的擁有全局作用域
局部變數只能在其被聲明的函數內部訪問,而全局變數可以在整個程式範圍內訪問
如果想在局部作用域想修改全局作用域的變數,要使用global關鍵字:
a = 1 def changeA(): global a a = 2 print(a) changeA()
結果為:
2
可以用通過函數參數傳遞:
a = 1 def changeA(a): a = 2 print(a) changeA(a)
結果為:
2
如果想修改嵌套作用域的變數需要使用nonlocal關鍵字