久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

        手機站
        千鋒教育

        千鋒學習站 | 隨時隨地免費學

        千鋒教育

        掃一掃進入千鋒手機站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學習站小程序
        隨時隨地免費學習課程

        當前位置:首頁  >  技術(shù)干貨  > Python的額外支持

        Python的額外支持

        來源:千鋒教育
        發(fā)布人:xqq
        時間: 2023-11-07 17:49:35 1699350575

        1.語法糖

        上面這段代碼看起來似乎已經(jīng)不能再精簡了,Python于是提供了一個語法糖來降低字符輸入量。

        importtime

        deftimeit(func):

        defwrapper():

        start=time.clock()

        func()

        end=time.clock()

        print'used:',end-start

        returnwrapper

        @timeit

        deffoo():

        print'infoo()'

        foo()

        重點關(guān)注第11行的@timeit,在定義上加上這一行與另外寫foo=timeit(foo)完全等價,千萬不要以為@有另外的魔力。除了字符輸入少了一些,還有一個額外的好處:這樣看上去更有裝飾器的感覺。

        2.內(nèi)置的裝飾器

        內(nèi)置的裝飾器有三個,分別是staticmethod、classmethod和property,作用分別是把類中定義的實例方法變成靜態(tài)方法、類方法和類屬性。由于模塊里可以定義函數(shù),所以靜態(tài)方法和類方法的用處并不是太多,除非你想要完全的面向?qū)ο缶幊?。而屬性也不是不可或缺的,Java沒有屬性也一樣活得很滋潤。從我個人的Python經(jīng)驗來看,我沒有使用過property,使用staticmethod和classmethod的頻率也非常低。

        classRabbit(object):

        def__init__(self,name):

        self._name=name

        @staticmethod

        defnewRabbit(name):

        returnRabbit(name)

        @classmethod

        defnewRabbit2(cls):

        returnRabbit('')

        @property

        defname(self):

        returnself._name

        這里定義的屬性是一個只讀屬性,如果需要可寫,則需要再定義一個setter:

        @name.setter

        defname(self,name):

        self._name=name

        3.functools模塊

        functools模塊提供了兩個裝飾器。這個模塊是Python2.5后新增的,一般來說大家用的應該都高于這個版本。但我平時的工作環(huán)境是2.4T-T

        3.1.wraps(wrapped[,assigned][,updated]):

        這是一個很有用的裝飾器??催^前一篇反射的朋友應該知道,函數(shù)是有幾個特殊屬性比如函數(shù)名,在被裝飾后,上例中的函數(shù)名foo會變成包裝函數(shù)的名字wrapper,如果你希望使用反射,可能會導致意外的結(jié)果。這個裝飾器可以解決這個問題,它能將裝飾過的函數(shù)的特殊屬性保留。

        importtime

        importfunctools

        deftimeit(func):

        @functools.wraps(func)

        defwrapper():

        start=time.clock()

        func()

        end=time.clock()

        print'used:',end-start

        returnwrapper

        @timeit

        deffoo():

        print'infoo()'

        foo()

        printfoo.__name__

        首先注意第5行,如果注釋這一行,foo.__name__將是'wrapper'。另外相信你也注意到了,這個裝飾器竟然帶有一個參數(shù)。實際上,他還有另外兩個可選的參數(shù),assigned中的屬性名將使用賦值的方式替換,而updated中的屬性名將使用update的方式合并,你可以通過查看functools的源代碼獲得它們的默認值。對于這個裝飾器,相當于wrapper=functools.wraps(func)(wrapper)。

        3.2.total_ordering(cls):

        這個裝飾器在特定的場合有一定用處,但是它是在Python2.7后新增的。它的作用是為實現(xiàn)了至少__lt__、__le__、__gt__、__ge__其中一個的類加上其他的比較方法,這是一個類裝飾器。如果覺得不好理解,不妨仔細看看這個裝飾器的源代碼:

        53deftotal_ordering(cls):

        54"""Classdecoratorthatfillsinmissingorderingmethods"""

        55convert={

        56'__lt__':[('__gt__',lambdaself,other:other

        57('__le__',lambdaself,other:notother

        58('__ge__',lambdaself,other:notself

        59'__le__':[('__ge__',lambdaself,other:other<=self),

        60('__lt__',lambdaself,other:notother<=self),

        61('__gt__',lambdaself,other:notself<=other)],

        62'__gt__':[('__lt__',lambdaself,other:other>self),

        63('__ge__',lambdaself,other:notother>self),

        64('__le__',lambdaself,other:notself>other)],

        65'__ge__':[('__le__',lambdaself,other:other>=self),

        66('__gt__',lambdaself,other:notother>=self),

        67('__lt__',lambdaself,other:notself>=other)]

        68}

        69roots=set(dir(cls))&set(convert)

        70ifnotroots:

        71raiseValueError('mustdefineatleastoneorderingoperation:<><=>=')

        72root=max(roots)#prefer__lt__to__le__to__gt__to__ge__

        73foropname,opfuncinconvert[root]:

        74ifopnamenotinroots:

        75opfunc.__name__=opname

        76opfunc.__doc__=getattr(int,opname).__doc__

        77setattr(cls,opname,opfunc)

        78returncls

        以上內(nèi)容為大家介紹了Python的額外支持,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓機構(gòu):千鋒教育。

        tags: python培訓
        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
        免費領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學 138****2860 剛剛成功領(lǐng)取
        王同學 131****2015 剛剛成功領(lǐng)取
        張同學 133****4652 剛剛成功領(lǐng)取
        李同學 135****8607 剛剛成功領(lǐng)取
        楊同學 132****5667 剛剛成功領(lǐng)取
        岳同學 134****6652 剛剛成功領(lǐng)取
        梁同學 157****2950 剛剛成功領(lǐng)取
        劉同學 189****1015 剛剛成功領(lǐng)取
        張同學 155****4678 剛剛成功領(lǐng)取
        鄒同學 139****2907 剛剛成功領(lǐng)取
        董同學 138****2867 剛剛成功領(lǐng)取
        周同學 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        连城县| 冀州市| 岳池县| 昭通市| 即墨市| 三穗县| 泸水县| 定兴县| 长汀县| 荆门市| 开化县| 滕州市| 竹山县| 广饶县| 鸡泽县| 黄平县| 烟台市| 吴堡县| 宝兴县| 陆河县| 晋中市| 南江县| 黑山县| 大竹县| 伊金霍洛旗| 琼结县| 衡水市| 阿巴嘎旗| 潜江市| 勐海县| 卓尼县| 宁武县| 西和县| 剑阁县| 阳西县| 磐安县| 运城市| 平昌县| 阜城县| 五指山市| 赞皇县|