圓括號用於運行函數,但沒有它們,名稱仍像變量一樣引用該函數。
return myFunc() + 1
這將評估myFunc
函數,爲其值加1,然後返回該值。括號是爲了讓函數運行並返回一個數值所需要的。
return addOneInside
這是不實際運行addOneInside
,它僅僅是返回函數的變量。您可以將其分配給其他名稱並存儲以備後用。你理論上可以這樣做:
plusOne = addOneInside
plusOne()
它實際上會調用addOneInside
函數。
您最初的問題中的特定實例被稱爲裝飾器,它是您對傳遞給您的函數的參數執行代碼的一種方式。你的例子不是很實用,但我可以修改它以顯示一個簡單的用例。
假設您只想將正數傳遞給您的函數。如果myFunc
傳遞的是負數,則需要將其更改爲0.可以使用像這樣的裝飾器來管理它。
def addOne(myFunc):
def addOneInside(num):
if num < 0:
num = 0
return myFunc(num)
return addOneInside # <-----here is the question
@addOne
def oldFunc(number):
return number
爲了解釋,該@addOne
是修飾語法,它的連接上參數/ S的,只要你把它oldFunc
被稱爲addOneInside
功能。所以,現在這裏的一些示例輸出:
oldFunc(-12)
>>> 0
oldFunc(12)
>>> 12
所以,現在你可以添加邏輯來oldFunc
是獨立操作參數的分析邏輯的。你也可以相對容易地改變允許的參數。也許還有一個最大上限,或者你希望它記錄或注意到該值不應該是負值。您也可以將這個裝飾器應用於多個功能,並且它們將在所有這些功能上執行相同的操作。
This blogpost爲我解釋了很多,所以如果這個信息太簡單了就不清楚了,請嘗試閱讀那裏的詳細解釋。
壓痕。 Python使用它來確定函數的開始和結束。在addOne函數內添加一級縮進。 – bsa
哪個版本的python?什麼是確切的語法錯誤? – ReyCharles
您必須真正向我們展示Python向您展示的確切錯誤。正如我所看到的,對於Python 2.7來說,一切都應該正常工作,但是我們需要知道Ptyhon版本的錯誤行和錯誤消息。謝謝 – madtyn