PYthon 中函式編寫時需要注意的地方

2021-07-23 19:11:33 字數 1802 閱讀 6865

函式:

1.**復用的第一步就是使用函式。

2.乙個函式可以接受任何數量(包括0)的任何型別的值最為輸入變數,並且返回任何數(包括0)的任何型別的結果。

3.python中的一切都是物件,包括字串、數字、元祖、列表、字典和函式。

4.呼叫python函式help()可以列印輸出乙個函式函式的引數列表和規範文件。如果僅僅是想要得到文件的字串可以用doc

5.可以把函式作為函式的引數,函式也可以作為列表、元組、集合、和字典的元素。函式名是不可變得,因此可以把函式用作字典的鍵。python的函式式一級物件,也就是說,我們可以直接引用函式把函式當成引數傳給其他函式,並通過表示式及if語句對其進行比較和判斷。

6.閉包是乙個可以由另乙個函式動態生成的函式,並且可以改變和儲存函式外建立的變數的值。(也可以說閉包是乙個定義在某個作用域中的函式,這種函式引用了那個作用域裡的變數。)

7.python使用特殊的規則來比較兩個元組。它首先比較各元組中下標為0的對應元素。如果相等,再比較下標為1的對應元素,如果還是相等,那就繼續比較下標為2的元素,一次類推。

8.在表示式中引用變數時,python直譯器將會按照如下順序遍歷各作用域:

(1)當前函式的作用域

(2)任何外圍作用域(例如:包含當前函式的其他函式)。

(3)包含當前**的那個模組的作用域(也叫全域性作用域)

(4)內建作用域(也就是包含len及str等函式的那個作用域)

9.給變數賦值時,規則有所不同。如果當前作用域內已經定義了這個變數,那麼該變數就會具備新值。若是當前作用域內沒有這個變數,python則會把這次賦值視為對該變數的定義,而新定義的這個變數,其作用域就是包含賦值操作的這個函式。

10.nonlocal語句。nonlocal清楚地表明如果在閉包中給該變數賦值,那麼修改的其實是閉包外那個作用域的變數。但是,nonlocal的唯一限制是它不能延伸到模組級別,這個是為了防止它汙染全域性作用域。這個與global語句互補。global用來表示對該變數的賦值操作,將會直接修改作用域裡的那個變數。

(1)於定義某個作用域內的閉包來說,它可以引用這些作用域中的變數

(2)使用預設的方式對閉包內的變數賦值,不會影響外圍作用域中的同名變數

(3)在python3中,程式可以閉包內呼叫nonlaocal語句來修飾某個名稱,使得該閉包能夠修改外圍作用域中的同名變數。

(4)在python2中,程式可以使用可變值(例如,包含單個元素的列表)來實現與nonlocal語句相仿的機制。

(5)除了那種比較簡單的函式,盡量不要用nonlocal語句。

12.考慮用生成器改寫直接返回列表的函式

(1)。生成器是使用yield表示式的函式。生成器是用來建立python序列中的乙個物件。使用它尅迭代龐大的序列,且不需要再記憶體中建立和儲存整個序列。

(2)呼叫生成器函式時,它不會真得執行,而是返回迭代器。每次在迭代器上呼叫內建的next函式時,迭代器會把生成器推進到下乙個yield表示式那裡。生成器傳給yield的每乙個值,都會由迭代器返回給呼叫者

(3)用生成器改寫後,則可以對應任意長度的輸入資料

(4)定義生成器函式時,需要注意的就是函式返回的那個迭代器,是有狀態的,呼叫者不應該反覆使用它。

(5)使用生成器比把收集到的結果放入列表裡返回給呼叫者更加清晰

(6)由生成器函式所返回的那個迭代器,可以把生成器函式體中,傳給yield表示式的那些值,逐次產生出來

(7)無論輸入量有多大,生成器都能產生一系列輸出,因為這些輸入量和輸出量都不會影響它在執行時所耗費的記憶體。

13.在引數迭代時,要多加小心

今天有點困了,先總結這些

編寫Shell指令碼列印輸出變數 及編寫時注意事項

shell指令碼語言是一種非類解釋型語言,弱語言型別 linux支援的所有shell中,都可以通過賦值符號為變數賦值 shell指令碼變數可以分為兩類,區域性變數和環境變數 區域性變數是在自己編寫的shell指令碼內部使用,環境變數可以在系統上面,在bash系統之上使用 其他的程序或者程式都可以呼叫...

python編寫api原則 編寫api需要一些建議

聽起來好像您已經在python方法中定義了所有api功能,因此您可以使用pythonweb服務框架來直接或通過簡單的包裝器服務類公開它們。我建議你看看關於web services at python.org的wiki頁面。在 如果您想使用json作為web服務的傳輸協議,我建議您使用json rpc...

struts2和spring整合時需要注意的地方

org.springframework.web.context.contextloaderlistener contextconfiglocation 2 對struts.xml配置檔案的乙個地方進行修改即可 原來的配置檔案action為 整合的配置檔案action為 注 這裡的calss從spri...