Python 基礎學習 partial 用法

2021-09-10 19:58:14 字數 2226 閱讀 4769

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 會自動去重得到 二 函式式程式設計 ...