裝飾器(Decorators)是python的一個重要部分簡單地說 python
他們是修改其餘函數的功能的函數。函數
有助於讓咱們的代碼更加簡短 也更加pythonic 對象
最難掌握的概念之一變量
------裝飾器
一切皆對象co
---------return
def hi(name="yasoob"):
return "hi"+name
print(hi())
#output:'hi yasoob'
咱們甚至能夠將一個函數賦值給一個變量
好比greet=hi
#這裏咱們沒有使用小括號 由於咱們不是在調用hi函數
#而是將它放在greet變量裏頭 咱們嘗試運行下這個
print(greet())
#output:'hi yasoob'
若是咱們刪除舊的hi函數 看看會發生什麼
del hi
print(hi())
#output:NameError
print(greet())
#output:'hi yasoob'
-----------
在函數中定義函數
---------
def hi(name="yasoob"):
print("如今你在hi()中")
def greet():
return "如今你在greet()函數"
def welcome():
return "如今你在welcome函數"
print(greet())
print(welcome())
print("如今你回到hi()函數裏面")
hi()
#output:如今你在hi()中
如今你在greet()函數
如今你在welcome函數
如今你回到hi()函數裏面
#上面展現了不管什麼時候你調用hi() greet() welcome()將會同時被調用
#而後greet() 和welcome()函數在hi()函數以外是不能訪問的
greet()
#output:NameError:name 'greet' is not defined
------------------------
能夠嵌套的函數 函數也能夠返回函數
--------
從函數從返回函數
---------
其實不須要再一個函數裏去執行 另一個函數 咱們也能夠將其 做爲輸出返回出來
def hi(name="yasoob"):
def greet():
return "如今你在greet()函數"
def welcome():
return "如今你在welcome()函數"
if name=="yasoob":
return greet
else:
return welcome
a=hi()
print(a)
----------