1. 程式人生 > 實用技巧 >python 將函式賦值給變數時需要注意的一些問題

python 將函式賦值給變數時需要注意的一些問題

https://www.cnblogs.com/seirios1993/p/6582936.html

見過兩種函式賦值給變數的形式,一種是

a=f

另一種是

a=f()

這兩種形式是有區別的,分別總結一下。

1.a=f型屬於將變數指向函式。

用程式碼驗證一下:

>>> f = abs
>>> f(-10)
10

說明變數f現在已經指向了abs函式本身。直接呼叫abs()函式和呼叫變數f()完全相同。這是廖雪峰老師python教程上的例子,現在呼叫f()和呼叫abs()是一樣的了。

再舉一個工廠函式的例子:

def maker(N):

  def action(X):

    return X**N

  return action

這個巢狀函式的外層返回值為內層函式的函式名,注意沒有括號,這裡有無括號是有很大區別的。此時呼叫外部函式:

f=maker(2)

那麼如上所述,f便指向了action函式,且限制條件為N=2,可以理解為f為N等於2時的action函式。我們來呼叫它:

>>> f(3)
9

證明f和action函式是一樣的。

2.a=f()型屬於將f()的返回值賦值給a的過程

這裡的a僅僅接收f()的返回值,如果f()沒有返回值,那麼a即被賦值為None。這裡值得注意的一點是,在a=f()的執行過程中,f()會執行一次,這也是我剛剛搞明白的,如:

>>> def add(x,y):
    z=x+y
    print(z)
>>>a=add(3,4)
7