最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中functools模塊的常用函數(shù)解析

 更新時(shí)間:2016年06月30日 16:09:12   作者:wyabc1986  
這篇文章主要介紹了Python中functools模塊的常用函數(shù)解析,分別講解了partial、update_wrapper、wraps、total_ordering的用法,需要的朋友可以參考下

1.partial
首先是partial函數(shù),它可以重新綁定函數(shù)的可選參數(shù),生成一個(gè)callable的partial對(duì)象:

>>> int('10') # 實(shí)際上等同于int('10', base=10)和int('10', 10) 
10 
>>> int('10', 2) # 實(shí)際上是int('10', base=2)的縮寫(xiě) 
2 
>>> from functools import partial 
>>> int2 = partial(int, 2) # 這里我沒(méi)寫(xiě)base,結(jié)果就出錯(cuò)了 
>>> int2('10') 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
TypeError: an integer is required 
>>> int2 = partial(int, base=2) # 把base參數(shù)綁定在int2這個(gè)函數(shù)里 
>>> int2('10') # 現(xiàn)在缺省參數(shù)base被設(shè)為2了 
2 
>>> int2('10', 3) # 沒(méi)加base,結(jié)果又出錯(cuò)了 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
TypeError: keyword parameter 'base' was given by position and by name 
>>> int2('10', base=3) 
3 
>>> type(int2) 
<type 'functools.partial'> 

從中可以看出,唯一要注意的是可選參數(shù)必須寫(xiě)出參數(shù)名。

2.update_wrapper
接著是update_wrapper函數(shù),它可以把被封裝函數(shù)的__name__、__module__、__doc__和 __dict__都復(fù)制到封裝函數(shù)去:

#-*- coding: gbk -*- 
 
def thisIsliving(fun): 
 def living(*args, **kw): 
  return fun(*args, **kw) + '活著就是吃嘛。' 
 return living 
 
@thisIsliving 
def whatIsLiving(): 
 "什么是活著" 
 return '對(duì)啊,怎樣才算活著呢?' 
 
print whatIsLiving() 
print whatIsLiving.__doc__ 
 
print 
 
from functools import update_wrapper 
def thisIsliving(fun): 
 def living(*args, **kw): 
  return fun(*args, **kw) + '活著就是吃嘛。' 
 return update_wrapper(living, fun) 
 
@thisIsliving 
def whatIsLiving(): 
 "什么是活著" 
 return '對(duì)啊,怎樣才算活著呢?' 
 
print whatIsLiving() 
print whatIsLiving.__doc__ 

結(jié)果:

對(duì)啊,怎樣才算活著呢?活著就是吃嘛。
None

對(duì)啊,怎樣才算活著呢?活著就是吃嘛。
什么是活著

不過(guò)也沒(méi)多大用處,畢竟只是少寫(xiě)了4行賦值語(yǔ)句而已。

3.wraps
再有是wraps函數(shù),它將update_wrapper也封裝了進(jìn)來(lái):

#-*- coding: gbk -*- 
 
from functools import wraps 
 
def thisIsliving(fun): 
 @wraps(fun) 
 def living(*args, **kw): 
  return fun(*args, **kw) + '活著就是吃嘛。' 
 return living 
 
@thisIsliving 
def whatIsLiving(): 
 "什么是活著" 
 return '對(duì)啊,怎樣才算活著呢?' 
 
print whatIsLiving() 
print whatIsLiving.__doc__ 

結(jié)果還是一樣的:

對(duì)啊,怎樣才算活著呢?活著就是吃嘛。
什么是活著

4.total_ordering
最后至于total_ordering函數(shù)則給予類(lèi)豐富的排序方法,使用裝飾器簡(jiǎn)化了操作。如果使用必須在類(lèi)里面定義一個(gè)__lt__(),__le__(), __gt__(), 或__ge__()。應(yīng)該給類(lèi)添加一個(gè)__eq__() 方法。

from functools import total_ordering

@total_ordering
class Student(object):
  def __init__(self, name):
    self.name = name

  def __eq__(self, other):
    return self.name.lower() == other.name.lower()

  def __lt__(self, other):
    return self.name.lower() < other.name.lower()

a = Student('dan')
b = Student('mink')

print a > b
print a
print sorted([b, a])

打印結(jié)果

False
<__main__.Student object at 0x7f16ecb194d0>
[<__main__.Student object at 0x7f16ecb194d0>, <__main__.Student object at 0x7f16ecb195d0>]

相關(guān)文章

  • python?pdb調(diào)試器及使用方法

    python?pdb調(diào)試器及使用方法

    這篇文章主要介紹了python?pdb調(diào)試器及使用方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Python數(shù)據(jù)分析入門(mén)之?dāng)?shù)據(jù)讀取與存儲(chǔ)

    Python數(shù)據(jù)分析入門(mén)之?dāng)?shù)據(jù)讀取與存儲(chǔ)

    今天繼續(xù)帶大家學(xué)習(xí)python數(shù)據(jù)分析,下文中有非常詳細(xì)的代碼示例,清楚地解釋了python數(shù)據(jù)讀取與存儲(chǔ)的相關(guān)知識(shí),需要的朋友可以參考下
    2021-05-05
  • python適合人工智能的理由和優(yōu)勢(shì)

    python適合人工智能的理由和優(yōu)勢(shì)

    在本篇文章里小編給大家分享了關(guān)于python適合人工智能的理由和優(yōu)勢(shì)以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-06-06
  • pycharm社區(qū)版安裝django并創(chuàng)建一個(gè)簡(jiǎn)單項(xiàng)目的全過(guò)程

    pycharm社區(qū)版安裝django并創(chuàng)建一個(gè)簡(jiǎn)單項(xiàng)目的全過(guò)程

    社區(qū)版的pycharm跟專(zhuān)業(yè)版的pycharm應(yīng)用差別還是不太大,下面這篇文章主要給大家介紹了關(guān)于pycharm社區(qū)版安裝django并創(chuàng)建一個(gè)簡(jiǎn)單項(xiàng)目的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Python實(shí)現(xiàn)獲取亂序列表排序后的新下標(biāo)的示例

    Python實(shí)現(xiàn)獲取亂序列表排序后的新下標(biāo)的示例

    本文主要介紹了Python實(shí)現(xiàn)獲取亂序列表排序后的新下標(biāo)的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python利用jmespath模塊進(jìn)行json數(shù)據(jù)處理

    Python利用jmespath模塊進(jìn)行json數(shù)據(jù)處理

    jmespath是python的第三方模塊,是需要額外安裝的。它在python原有的json數(shù)據(jù)處理上做出了很大的貢獻(xiàn)。本文將詳細(xì)介紹如何利用jmespath實(shí)現(xiàn)json數(shù)據(jù)處理,需要的可以參考一下
    2022-03-03
  • NumPy 字節(jié)交換的具體實(shí)現(xiàn)

    NumPy 字節(jié)交換的具體實(shí)現(xiàn)

    在計(jì)算機(jī)中,不同的系統(tǒng)可能采用不同的字節(jié)序,NumPy提供的函數(shù)為我們提供了便捷的字節(jié)交換方法,通過(guò)本文的介紹,可以幫助我們更好地處理多字節(jié)類(lèi)型的數(shù)據(jù),感興趣的可以了解一下
    2026-05-05
  • Python unittest單元測(cè)試框架及斷言方法

    Python unittest單元測(cè)試框架及斷言方法

    這篇文章主要介紹了Python unittest單元測(cè)試框架及斷言方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python中容易被忽視的核心功能總結(jié)

    Python中容易被忽視的核心功能總結(jié)

    Python是一門(mén)富有魅力的編程語(yǔ)言,擁有豐富的功能和庫(kù),以及強(qiáng)大的社區(qū)支持,然而,有一些核心功能經(jīng)常被忽視,而它們實(shí)際上可以極大地提高代碼的質(zhì)量、可讀性和性能,本文將給大家詳細(xì)的介紹一下這些容易被忽視的功能,需要的朋友可以參考下
    2023-11-11
  • keras模型保存為tensorflow的二進(jìn)制模型方式

    keras模型保存為tensorflow的二進(jìn)制模型方式

    這篇文章主要介紹了keras模型保存為tensorflow的二進(jìn)制模型方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05

最新評(píng)論

田林县| 宁德市| 南澳县| 宝坻区| 枣阳市| 丹东市| 吴江市| 南澳县| 茂名市| 普兰县| 方正县| 桂平市| 托里县| 西平县| 信阳市| 区。| 龙里县| 集安市| 龙门县| 青铜峡市| 昌江| 吴江市| 阜新市| 嫩江县| 信阳市| 丘北县| 吉木萨尔县| 星子县| 高台县| 民权县| 中山市| 肇东市| 门源| 贺兰县| 九寨沟县| 石阡县| 霍林郭勒市| 崇礼县| 岗巴县| 铜陵市| 彩票|