hr|Python 中的装饰器,会让你的写代码变得更好。生活更加神奇

文章图片
如果有一件事让 Python 非常成功 , 那就是它的可读性 。 其他一切都取决于此:如果代码不可读 , 则很难维护 。 它也不是初学者友好的 - 一个被不可读代码困扰的新手有一天不会尝试编写自己的代码 。
在装饰器出现之前 , Python 已经具有可读性和初学者友好性 。 但是随着该语言开始用于越来越多的事情 , Python 开发人员觉得需要越来越多的功能 , 同时又不会弄乱环境并使代码不可读 。
装饰AR ? 完全实现功能的黄金时段的例子 。 转过头来确实需要一段时间 , 但这是值得的 。 当您开始使用它们时 , 您会注意到它们不会使事情变得过于复杂并使您的代码整洁而时髦 。
简而言之 , 装饰器是处理高阶函数的一种巧妙方式 。 所以让我们先看看那些!
函数返回函数
假设你有一个函数——它迎接你传递给它的任何对象 。 假设您有另一个功能 , 它会在适当的地方插入“Simon” 。 我们如何将两者结合起来?在你往下看之前先想一想 。 greet() simon()
输出是 。 希望这对你有意义! 'Hello Simon!'
当然 , 我们可以直接调用. 然而 , 重点是我们可能想要将“Simon”放入许多不同的函数中 。 如果我们不使用“Simon”而是使用更复杂的东西 , 我们可以通过将其打包成一个函数来节省大量代码行 , 例如. greet(\"Simon\") simon()
其他函数内部的函数
我们也可以在其他函数中定义函数 。 这很重要 , 因为装饰者也会这样做!没有装饰器 , 它看起来像这样:【hr|Python 中的装饰器,会让你的写代码变得更好。生活更加神奇】函数 respect() 返回一个函数;返回 congrats 函数 , (或其他一些参数而不是)返回 insult 函数 。 要调用函数 , 请输入和 , 就像普通函数一样 。 respect(\"yes\") respect(\"brother\") \"brother\" respect(\"yes\")() respect(\"brother\")()
知道了?然后你就准备好了装饰师!Python 装饰器的 ABC带有@ 符号的函数
让我们尝试结合前面的两个概念:一个函数接受另一个函数并定义一个函数 。 听起来令人难以置信?考虑一下:
最后一行确保我们不再需要调用;就足够了 。 你知道那个调用的输出是什么吗?如果您不确定 , 请自己尝试! startstop(roll)() roll()
现在 , 作为一个很好的选择 , 我们可以在定义后立即插入: startstop()
这并不相同 , 但胶水到的初期 。 roll() startstop()
增加了灵活性为什么有用?这不会像以前一样消耗那么多的代码行吗?
在这种情况下 , 是的 。 但是一旦你处理稍微复杂的东西 , 它就会变得非常有用 。 这一次 , 您可以将所有装饰器(即上面的部分)移动到它自己的模块中 。 也就是说 , 您将它们写入一个名为的文件中 , 并将如下内容写入您的主文件中: def startstop() decorators.py
原则上 , 您可以在不使用装饰器的情况下做到这一点 。 但这种方式让生活更轻松 , 因为您不必再处理嵌套函数和无休止的括号计数 。
您还可以嵌套装饰器:
请注意 , 我们尚未定义 , 但您将在下一节中看到它 。 它是一个函数 , 可以测量一个进程在 Python 中花费的时间 。 exectime()
这种嵌套相当于这样的一行:
- 太空中的真菌毒素是否危害宇航员健康?科学家:尚不明确
- 科学家:人类只是一片巨大的“空洞虚无”中的一粒微尘!
- 文艺评论丨科幻题材崛起与Z世代审美观照中的双向奔赴
- 华为|华为原董事长孙亚芳:我们有些销售人员眼睛中的客户就像猎物!
- LG|时隔数年,LG gram 14依旧是商务本中的“种子选手”
- Python|十年质保、3400MB/S!279元买512GB NVMe高速固态硬盘
- 格力电器|不要再说Python难了,按照这个学习路线,四周速成Python
- 华为Nova|华为nova10真机曝光:相机有一圈金色的圆环装饰,很是吸睛
- Python|华为再造新车!问界M7揭下外企的遮羞布,余承东:超越百万豪车
- Python|OPPO A96可以升级ColorOS 12了,我看谁还说入门机只管生不管养?
