python闭包、装饰器
1、閉包 closure
閉包是指引用了此函數(shù)外部嵌套函數(shù)作用域內(nèi)的變量的函數(shù)
閉包必須滿足三個(gè)條件:
必須有一個(gè)內(nèi)嵌函數(shù)
內(nèi)嵌函數(shù)必須引用外部函數(shù)中的變量
外部函數(shù)的返回值必須是內(nèi)嵌函數(shù)
閉包的特點(diǎn):
閉包中外部嵌套函數(shù)中的變量不會(huì)在函數(shù)調(diào)用后立即銷毀,而是被內(nèi)嵌函數(shù)引用
使用閉包的注意事項(xiàng):
由于閉包會(huì)使得函數(shù)中的變量都被保留在內(nèi)存中,內(nèi)存消耗比較大,所以不能濫用閉包
2、裝飾器 decorators(專業(yè)提高篇)
裝飾器是一個(gè)函數(shù),主要作用是用來包裝另一個(gè)函數(shù)或類(后面才講)
作用:
在不修改被裝飾函數(shù)的源代碼,不改變被裝飾的函數(shù)的調(diào)用方式的情況下添加或改變?cè)瘮?shù)的功能。
函數(shù)裝飾器的語法:
def 裝飾器函數(shù)名(fn):
語句塊
return 函數(shù)對(duì)象
@裝飾器函數(shù)名 <換行>
def 被裝飾函數(shù)名(形參列表):
語句塊
3、函數(shù)的文檔字符串
函數(shù)內(nèi)第一次未賦值給任何變量的字符串是函數(shù)的文檔字符串
語法:
def 函數(shù)名(參數(shù)列表):
'函數(shù)文檔字符串'
語句塊
示例:
def myfunc(a, b, c):
'這是函數(shù)的文檔字符串'
pass
>>> help(myfunc)
5、函數(shù)的 __doc__屬性
__doc__屬性用于綁定函數(shù)的文檔字符串
6、函數(shù)定義語句(def 語句)的完整語法:
[@裝飾器名1]
[@裝飾器名2]
[...]
def 函數(shù)名([位置形參],[*元組形參], [命名關(guān)鍵字形參],[**字典形參]):
'''文檔字符串'''
語句塊
轉(zhuǎn)載于:https://www.cnblogs.com/zhaoyang1997/p/10503344.html
總結(jié)
以上是生活随笔為你收集整理的python闭包、装饰器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 07LaTeX学习系列之---Latex
- 下一篇: Vue写一个日历