1.?關(guān)于內(nèi)部函數(shù)和裝飾器
在python中可以再函數(shù)內(nèi)部定義函數(shù)
可以使用裝飾器的概念,任何函數(shù)都可以作為裝飾器,使用:
???def wfunc():
?Print “wrapped func”
@wfunc()
def foo():
?pass
?如上面的代碼那么在調(diào)用foo()函數(shù)的時候,就會先調(diào)用wfunc()函數(shù),其實這個也就是我們
Java程序員所說的AoP。
?def tt(fun):
??? print 'Hello I am tt'
??? return fun
def ttt(fun):
??? print "Hello I am ttt"
??? return fun
def tttt(fun):
??? print "Hello I am tttt"
??? return fun()
???
@tt(tttt)
@ttt
def foo():
?? print 'Hello I am foo'
foo = tt(tttt)(ttt(foo))
2.? python解釋器
所有的python程序都是在Python解釋器中執(zhí)行 python解釋器是一個獨立的進程,其實我們可以把整個
python解釋器看做服務(wù)器,而我們的程序就是寫在客戶端(各種編程工具),然后在服務(wù)器上運行。
3.?閉包
如果在一個內(nèi)部函數(shù)里,對在外部作用域(但不是在全局作用域)的
變量進行引用,那么內(nèi)部函數(shù)就被認為是closure。定義在外部函數(shù)內(nèi)的但由內(nèi)部函數(shù)引用或者使用的變
量被稱為自由變量。
?
?
4.?名字空間
如果說模塊是按照邏輯來組織 Python代碼的方法, 那么文件便是物理層上組織模塊的方法。因此, 一個
文件被看作是一個獨立模塊, 一個模塊也可以被看作是一個文件。 模塊的文件名就是模塊的名字加上擴
展名 .py 。
一個名稱空間就是一個從名稱到對象的關(guān)系映射集合。
?解釋器啟動之后, 也可以訪問這個搜索路徑, 它會被保存在 sys 模塊的 sys.path 變量里。可
以使用sys.path .append()函數(shù)加入搜索路徑。
?解釋器執(zhí)行到這條語句, 如果在搜索路徑中找到了指定的模塊, 就會加載它。該過程遵循作用
域原則, 如果在一個模塊的頂層導(dǎo)入, 那么它的作用域就是全局的; 如果在函數(shù)中導(dǎo)入, 那么它的作用
域是局部的。
使用自己想要的名字替換模塊的原始名稱。一個普遍的解決方案是把模塊賦值給一個變量。當然這樣很
無聊,所以可以使用 as 關(guān)鍵字達到同樣的效果。
Python 模塊(.py, .pyc, or .pyo 文件)。
在python中也有包的概念,基本和Java相同,就不多說了。