麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

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

Python的額外支持

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

1.語法糖

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

importtime

deftimeit(func):

defwrapper():

start=time.clock()

func()

end=time.clock()

print'used:',end-start

returnwrapper

@timeit

deffoo():

print'infoo()'

foo()

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

2.內置的裝飾器

內置的裝飾器有三個,分別是staticmethod、classmethod和property,作用分別是把類中定義的實例方法變成靜態方法、類方法和類屬性。由于模塊里可以定義函數,所以靜態方法和類方法的用處并不是太多,除非你想要完全的面向對象編程。而屬性也不是不可或缺的,Java沒有屬性也一樣活得很滋潤。從我個人的Python經驗來看,我沒有使用過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后新增的,一般來說大家用的應該都高于這個版本。但我平時的工作環境是2.4T-T

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

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

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'。另外相信你也注意到了,這個裝飾器竟然帶有一個參數。實際上,他還有另外兩個可選的參數,assigned中的屬性名將使用賦值的方式替換,而updated中的屬性名將使用update的方式合并,你可以通過查看functools的源代碼獲得它們的默認值。對于這個裝飾器,相當于wrapper=functools.wraps(func)(wrapper)。

3.2.total_ordering(cls):

這個裝飾器在特定的場合有一定用處,但是它是在Python2.7后新增的。它的作用是為實現了至少__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

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

tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 极品丝袜乱系列在线阅读| 精品伊人久久| 黄色三级免费电影| 日本边添边摸边做边爱喷水| 二区三区在线| 毛片免费观看网址| 古装一级淫片a免费播放口| 日本大片免a费观看在线| 日本大片免a费观看在线| 国模视频一区二区| 国产精自产拍久久久久久蜜| 国产精品9999久久久久| 精品女同一区二区三区免费站| 久久久久国产午夜| 日本一卡2卡3卡4卡无卡免费| 国产精品久久久久久久久齐齐| 精品国产污污免费网站入口| 中文字幕一精品亚洲无线一区 | 韩国免费乱理论片在线观看2018| 日本三级高清| 精品卡2卡3卡4卡免费| 欧美高清在线精品一区| 在老公面前被| 三级在线看中文字幕完整版| 可以免费观看一级毛片黄a| 亚洲综合久久综合激情久久| 日本一道高清一区二区三区| 强挺进小y头的小花苞漫画| yy6080理论午夜一级毛片| 日本理论午夜中文字幕第一页| 亚洲伦理一区二区| 久久综合九色综合欧美狠狠| 4480yy私人影院论| 狠狠夜色午夜久久综合热91| 大狠狠大臿蕉香蕉大视频| 污污视频网站免费在线观看| 91香蕉国产线观看免| 国产欧美va欧美va香蕉在线 | 天天射夜夜骑| 狠狠操夜夜操| 亚洲电影在线播放|