變數賦值是我們在日常開發中經常會遇到的一個問題,以下這篇文章主要給大家介紹了關於python中將函數賦值給變數時需要注意的一些問題,文中透過範例程式碼介紹的非常詳細,對大家有一定的參考學習價值,需要的朋友們下面來一起看看吧。
前言
本文主要給大家介紹的是python將函數賦值給變數時需要注意的一些問題,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:
看過兩種函數賦值給變數的形式,一種是
##
a=f
a=f()
1.a=f型別屬於將變數指向函數。
用程式碼驗證一下:>>> f = abs >>> f(-10) 10
abs()函數和呼叫變數
f()完全相同。這是廖雪峰老師python教程上的例子,現在呼叫
f()和呼叫
abs()是一樣的了。
再舉一個工廠函數的例子:
def maker(N): def action(X): return X**N return action
f=maker(2)
>>> f(3) 9
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
>>>def log(func): def wrapper(*args, **kw): print('call %s():' % func.__name__) return func(*args, **kw) return wrapper >>>@log >>>def now(): print('2015-3-25')
return func(*args,**kw)這個語句是傳回了
now()函數(即func函數)的回傳值,後來發現now函數沒有回傳值,也就是為None,所以其實是這個語句在賦值過程,
func(*args,**kw)執行了,也就是函數now的print語句執行了。
def wrapper(*args,**kw): print(t+'begin call') result=func(*args,**kw) print(t+'end call') return result
result=func(*args,**kw)這句,後來理解後才明白其實賦值本身並沒有意義,只是這句話同時使得func函數運行了,所以寫成
def wrapper(*args,**kw): print(t+'begin call') func(*args,**kw) print(t+'end call')
總結#
以上是python中函數賦值給變數時的問題注意詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!