partial:
你可以使用partial函式(其實是個class)從原函式中派生出固定某些引數的新函式,使函式所需的引數減少(因為相當於設定好了某些引數的值),從而簡化**.
partial的定義**片段:
class
partial
: and keywords.
"""__slots__ =
"func"
,"args"
,"keywords"
,"__dict__"
,"__weakref__"
def__new__
(*args,
**keywords):if
not args:
raise typeerror(
"descriptor '__new__' of partial needs an argument")if
len(args)
<2:
raise typeerror(
"type 'partial' takes at least one argument"
) cls, func,
*args = args
ifnotcallable
(func)
:raise typeerror(
"the first argument must be callable"
) args =
tuple
(args)
ifhasattr
(func,
"func"):
args = func.args + args
tmpkw = func.keywords.copy(
) tmpkw.update(keywords)
keywords = tmpkw
del tmpkw
func = func.func
self =
super
(partial, cls)
.__new__(cls)
self.func = func
self.args = args
self.keywords = keywords
return self
def__call__
(*args,
**keywords):if
not args:
raise typeerror(
"descriptor '__call__' of partial needs an argument"
) self,
*args = args
newkeywords = self.keywords.copy(
) newkeywords.update(keywords)
return self.func(
*self.args,
*args,
**newkeywords)..
.
例子:
from functools import partial
defmultimath
(a,b,mode)
:if mode ==
"add"
:return a+b
elif mode ==
"multi"
:return a*b
elif mode ==
"sub"
:return a-b
elif mode ==
"divide"
:return a/b
multimath = partial(multimath,mode =
"multi"
)print
(multimath(3,
4))multimath = partial(multimath,
4,mode =
"divide"
)print
(multimath(3)
)
outcome:
12
1.3333333333333333
思考: 深度學習PART I 單層感知器
單層感知器的原始形式如下 如果把偏置項當作特殊權值,則單層感知器可以改為如下形式 感知器的學習規則 學習率 1 學習率太大,容易造成權值調整不穩定。2 學習率太小,權值調整太慢,迭代次數太多。收斂條件 1 誤差小於某個預先設定的較小的值。2 兩次迭代之間的權值變化已經很小。3 設定最大迭代次數,當迭...
python基礎學習
基本資料型別 學習基於python2.7,ubuntu16.04,python3中有一些不同的特性 在ubuntu終端輸入python,進入互動介面。print hello,world print 是乙個常用函式,輸出字串。在python2中,print還是乙個關鍵字,可以用print hello,...
Python 基礎學習
一 python中的資料結構 容器 list 列表 a 1,2,3,4 用方括號標記 可被修改 a 0 1 tuple 元組 a 4,5,6 用圓括號標記 不可被修改 b 0 4 dictionary 字典 即對映 d set 集合 不重複,無序,不支援索引 s 會自動去重得到 二 函式式程式設計 ...