是时候谈谈装潢师了｡
现在是Python中的关键术语｡
我们以前也见过装饰师｡
你还记得我们建课的时候吗？
我告诉过你有一个类方法和一个静态方法｡
我说, 嘿, 不要｡
别担心这个｡
我们以后再谈这个｡
好吧, 这是现在以后的事了｡
装饰器看起来像这样｡
他们有一个加号, 然后在它后面有一个名字｡
但是为了让我们完全理解什么是装饰器, 我们必须讨论Python中的函数, 以及它们为什么如此强大｡
这就是Python中Python的妙处｡
功能是我们所说的第一等公民｡
也就是说, 它们可以像变量一样传递｡
它们可以是函数内部的参数｡
它们就像变量一样｡
让我来告诉你｡
如果我创建一个hello函数, 坦白说, 这完全没用｡
因为它所做的一切就是打招呼｡
如果我这么做｡
还记得我说过函数在Python中基本上就是变量｡
同样, 并非所有编程语言都是如此｡
所以如果我想的话, 我可以说问候等于二｡
你好, 我是
这样如果我打印问候｡
我负责这个｡
我明白了｡
你好吗？
如果我就这么算了呢？
你好吗？
像这样吗？
如果我运行这个｡
我在内存中得到了函数的位置, 所以我必须像这样使用grit并正确运行它｡
我们必须调用hello函数｡
好吧, 我会的
如果我们这样做呢？
如果我说删除呢？
你好, 我是
Python中删除该函数的关键字｡
你觉得会发生什么？
看看我能不能运行这个｡
嗯嗯嗯
这是你所期望的吗？
你以为格雷特还能工作吗
Python的有趣之处在于我创建了hello, 它现在是在内存中创建的｡
当我们到达第四行时, 我说, 嘿, greet将指向hello｡
所以你好仍然可以在这里叫｡
我还是可以打招呼的｡
因为hello是指向内存中该位置的函数的名称｡
但是当我删除hello时, 它只会说, 嘿, 我要删除这个函数,
这个内存中对这个函数的名称引用｡
然而, 因为greet一个完整的nother变量仍然指向这个函数｡
我要把你好字删掉｡
如果我这样打招呼呢？
我将得到一个错误名称｡
但是, Hello未定义｡
问候语仍在内存中指向此位置｡
所以Python很聪明地说, 嘿, 你让我删除hello, 我就删除hello这个名字｡
但我不会删除这个函数, 因为Grete仍然指向它｡
所以Python中的函数就像变量一样｡
他们是一等公民｡
我们也可以传递函数｡
在争论中, 对吧？
如果我说hello然后这个hello收到另一个调用的函数｡
功能是这样的｡
我可以创建一个问候函数｡
什么叫问候｡
这个函数只会打印｡
还在这里｡
如果我跟注的话就在这里｡
你好吗？
有了｡
你好
或者我们说清楚, 我们就说a等于2｡
你好, 打招呼｡
而如果我打印了一份, 会发生什么事情呢？
这仍然有效, 因为我说, 嘿, 调用函数.
你好吗？
我在调用函数｡
你好用参数问候｡
所以我们在这里说运行函数和函数是什么｡
我们要调用这个函数因为我们有这些括号所以我们跳到这个函数在我们的例子中是什么｡
所以我们走过去说, 嘿, 把这个打印出来｡
我们不必在这里调用它, 因为hello函数会为我们调用它｡
那我为什么要教你这些？
这和装修师有什么关系？
装饰器之所以成为可能, 是因为这些特性, 函数的这种能力就像变量一样, 就像Python中的头等公民一样｡
当我们开始学习引擎盖下的装饰器时, 他们正在使用这种功能的力量｡
现在, 然后即将推出的视频｡
我们将讨论如何创建我们自己的, 它们的含义, 并扩展装饰器的概念｡
但这里有一个简短的形式是什么装饰｡
装饰器增强了我们的功能｡
如果我们在这里有我们的打招呼功能｡
通过添加像这样的装饰器, 我们可以增强我们的函数并为其添加额外的功能｡
它让python解释器知道我想让这个hello函数有一些额外的特性｡
但是, 让我们在下一个视频中进一步探讨这个主题｡