1. 程式人生 > >python閉包與裝飾器

python閉包與裝飾器

添加 war 返回值 AR set ret 功能 rgs 區別

閉包
閉包:兩個函數的嵌套,外部函數返回內部函數的引用,外部函數一定有參數
def 外部函數(參數):
  def 內部函數():
    pass
return 內部函數

他跟函數之間的區別:
1.格式兩個函數嵌套
2.閉包外部函數的參數可以在內存中保持
裝飾器
裝飾器是什麽:閉包加@xxx
裝飾器的作用:在不改變原先的函數值跟調用的方式,添加額外的功能
裝飾器的代碼:
def set_fun(func):
  def call_fun(*args,**kwargs):
    return func(*args,**kwargs)

return call_fun

@set_fun
def test():
  pass
裝飾器結論:
1.裝飾前的函數test,是由func指向的
2.裝飾後的函數test,實際是call_fun
3.裝飾前的test,call_fun,func三者參數一致
4.裝飾器不能去改變函數的調用方式跟返回值(道德)

python閉包與裝飾器