python中@的用法
@是乙個裝飾器,針對函式,起呼叫傳參的作用。
有修飾和被修飾的區別,@function作為乙個裝飾器,用來修飾緊跟著的函式(可以是另乙個裝飾器,也可以是函式定義)。
結果1
it's funa
分析1@funa 修飾函式定義def func(),將func()賦值給funa()的形參。
執行的時候由上而下,先定義funa、funb,然後執行funa(func())。
此時desa=func(),然後funa()輸出『it's funa'。
結果2分析2@funb 修飾裝飾器@funa,@funa 修飾函式定義def func(),將func()賦值給funa()的形參,再將funa(func())賦值給funb()。
執行的時候由上而下,先定義funa、funb,然後執行funb(funa(func()))。
此時desa=func(),然後funa()輸出『it's funa';desb=funa(func()),然後funb()輸出『it's funb'。
結果3
分析3同上,為了更直觀地看引數傳遞,列印desa,其傳的是func()的位址,即desa現在為函式desa()。
執行desa()即執行func(),desa=desa()=func()。
結果4
分析4上面將func()作為引數傳給funa,那麼funa(func())怎麼傳給funb()呢?列印desb,發現並沒有引數傳遞。
是否可以理解為當『裝飾器' 修飾 『裝飾器'時,僅是呼叫函式。
python演算法題 鍊錶反轉詳解 python
鍊錶的反轉是乙個很常見 很基礎的資料結構題,輸入乙個單向鍊錶,輸出逆序反轉後的鍊錶,如圖 上面的鍊錶轉換成下面的鍊錶。實現鍊錶反轉有兩種方式,一種是迴圈迭代,另外一種方式是遞迴。第一種方式 循壞迭代 循壞迭代演算法需要三個臨時變數 pre head next,臨界條件是鍊錶為none或者鍊錶就只有乙...
python序列詳解 python序列詳解
什麼是序列 序列指的是一塊可存放多個值的連續記憶體空間,這些值按一定順序排列,可以通過下標或者索引訪問它們。python中三種基本的序列型別 字串列表 列表由一系列按特定順序排列的元素組成。是python最常見的資料結構,用來表示列表 例如 arr 1,2,3,4,5 元組python 的元組與列表...
Python程序詳解
下面對python程序進行深入而仔細的學習,首先先讓大家了解下什麼是python程序,以及在對python程序進行處理時注意的相關問題,接下來,就由我給大家進行介紹學習,僅供大家學習。不過,雖然程序可在單獨的記憶體空間中執行,但除非這些python程序在單獨的處理器上執行,否則,實際並不是 同時 執...