我问你个问题｡
如果这个hello函数实际上使用了一个参数, 会发生什么情况？
比如说一个字符串｡
还是打了个招呼｡
而一个问候语就要印在这里了｡
让我们暂时删除bye｡
如果我跑了还能用吗？
你好吗？
暂停视频, 思考一下｡
让我们来看看
不知道｡
这是一个错误｡
如果你可以暂停视频看看你能不能解决这个问题, 我们怎么能让这个问题允许争论呢？
我在第五行看到了｡
上面写着5号线｡
Hello缺少一个必需的位置参数greeting, 因为当我们实际调用hello时, 我们期望有一个参数｡
但这里我们不给它任何论证｡
我们如何解决这个问题？
好吧, 一种方法就是简单地说｡
贪婪, 对吧？
或者我们想说什么就说什么｡
我们可以说X然后这个｡
包装函数接收参数｡
所以如果我单击“运行”｡
嗯嗯嗯
第13行现在显示错误, 因为现在我们需要实际给予它发送问候语, 所以如果我单击“Run”（运行）,
我们可以打个招呼｡
好吧, 我会的
这很管用｡
我希望这是有意义的｡
好吧, 我知道了
我们在打电话｡
你好, 我是
有了｡
你好, 我是
那么这个函数｡
你好蒙混过关｡
那我们呢？
将x右移接收为参数｡
记住, 在引擎盖下面, 我的设计师是说一个等于我的设计师｡
你好｡
好吧, 我知道了
所以我们要做的就是管理我的装潢师｡
你好吗？
现在变成了他们的说唱功能｡
当我们计算全神贯注的函数A时, 我们给予它一个高的参数｡
因此rapt函数接受此参数, 然后运行该函数｡
你好, 我是
但问题是, 如果一个问候语也有一个它接受的表情符号呢？
所以我们要打印, 问候, 然后是表情符号｡
嗯嗯嗯
我们该怎么办？
我们必须再创建一个参数, 然后再创建一个参数, 然后在这里, 用一个笑脸来调用它｡
如果我单击“运行”｡
好吧, 这应该是一根绳子｡
如果我单击“运行”｡
这是可行的, 但每次我需要更改参数时, 这都是令人兴奋的｡
这个我得修改一下.
如果我们有这样的关键字参数｡
默认值｡
你好, 我是
实际上, 我们可以使用一个模式, 让事情变得非常非常简单｡
我们要做的就是, 我们做了星星, 我们已经看到了, 它接受所有的位置参数,
然后是星, 星, 关键字弧, 它接受所有的关键字参数, 我们用来调用这个函数.
Singh星星弧用于解包所有位置参数, star star关键字弧用于解包所有关键字参数｡
如果这看起来让人困惑, 别担心｡
这只是一个模式, 你可以复制粘贴并记住｡
但现在看看这个｡
我可以做表情符号, 比如说, 悲伤的表情｡
作为关键字参数｡
现在如果我通过了｡
你好, 我是
像这样打了就跑｡
我们把这个也去掉｡
由于我们不需要它, 我们将正确地调用hello, 因为我们有装饰器, 然后单击run｡
你看那个｡
我一脸愁容就兴奋｡
它之所以被称为装饰器, 是因为它是编程中一个著名的模式.
这叫做装饰者模式｡
这是装饰图案｡
它给了我们装饰器灵活性, 这样我们就可以通过使用星星和关键字弧, 然后像这样在函数内部解包,
将我们想要的任意多的参数传递到rapt函数中｡
这个语法, 假设我们甚至没有print语句, 这个语法就是为什么装饰器如此强大｡
通过使用这几行代码, 我们就能够使用装饰器模式来装饰我们的函数, 从而添加功能｡
装饰器模式在整个编程过程中都使用｡
所以这是一个非常非常强大的概念｡
完成有关装饰器的课程｡
我想和你们谈谈装饰器的一些有用的方式, 以及我们在代码中看到装饰器模式的一些常见位置,
我们将构建我们自己的性能装饰器, 它将能够告诉我们函数的执行情况,
它们有多快｡
我向你们保证,
到最后, 视频装饰器对你们来说是有意义的, 你们将能够向其他人和其他朋友解释为什么我们应该在我们的程序中使用装饰器｡
我会看到你在那个｡
再见, 再见, 再见