小李飛刀 python請與我一起愉快的玩耍吧!

2021-09-13 02:26:05 字數 1436 閱讀 4807

如果總是擔心能不能做到的話,那就乾脆不要做了。

想做的事情還是一往無前的好,什麼都不想,就努力衝衝衝吧!

因為函式是乙個物件。

所以。

在**執行期間動態增加功能的方式,稱之為「裝飾器」(decorator)。

本質上,decorator就是乙個返回函式的高階函式。

比如,定義乙個能列印日誌的decorator。

def log(func):

print('call %s():' % func.__name__)

return func(*args, **kw)

log接受函式作為引數,要放置在函式定義處。

這樣呼叫now()的時候,就會先列印出程式名稱。

@log放到now()函式的定義處,相當於執行了語句

now = log(now)
當需要再進一步的時候,比如decorator本身需要傳入引數,就需要再改造下函式。

這個三層巢狀的效果如下:

now = log('execute')(now)
python內建的functools.wraps就可以用來處理這個問題。

乙個完整的decorator的**如下:

import functools

def log(func):

@functools.wraps(func) #記錄的是傳入的func的值,位置在巢狀內

print('call %s():' % func.__name__)

return func(*args, **kw)

或者帶引數的如下。

import functools

def log(text):

def decorator(func):

@functools.wraps(func) #記錄的是傳入的func的值,位置在巢狀內

print('%s %s():' % (text, func.__name__))

return func(*args, **kw)

return decorator

@functools.wraps(func)加上這句很重要

小李飛刀 python老師我今天沒有靈感起名字了

emmm,最土的那句話。越努力,越幸運。排序的核心就是為了比較兩個元素的大小。對於數字很好進行比較,但是對於字串和dict的比較過程就需要用函式抽象出來。所以,sorted 函式作為乙個高階函式,可以接收乙個key函式來實現自定義的排序。key指定的函式將作用於list的每乙個元素上,並根據key函...

python 練習 小李飛刀大戰伏地魔)

檢視詳細資訊的 小李飛刀大戰伏地魔 通過物件來實現 小李將飛刀放入刀袋中,然後帶著刀帶去找伏地魔,小李飛刀從刀帶拿出飛刀飛伏地魔,伏地魔受到傷害 需要的類 person 屬性 name 姓名 hp 生命值 kb 刀帶 方法 帶刀帶 take kb 放刀 put knife in kb 取刀 get ...

小李飛刀 飛呀飛呀python的驕傲放縱

這幾天都沒有更新,不代表我沒有學習吖!這兩天都在忙著半夜,終於有了自己的小窩,一直住家裡,突然搬出來心情還滿奇特的。雖然還在乙個城市裡,但是感覺有了更多的自己的時間。比如現在是晚上十點,在家的話可能還有很多吵吵嚷嚷的聲音 家裡人口比較多 現在就自己安靜的敲敲字學習什麼的。恩,還是要好好學習,紀念下搬...