当前位置: 首页 > news >正文

网站申请/百度小说排名

网站申请,百度小说排名,wordpress主题对比,怎么做网站移植网站作者 | Saurabh Kukade 译者 | 刘畅 出品 | AI科技大本营(ID:rgznai100) 最近,作者遇到一个非常有趣的概念,它就是用 Python 进行元编程。我想在本文中分享我对该主题的见解。作者希望它可以帮助解决这个问题,因为很多…

作者 | Saurabh Kukade

译者 | 刘畅

出品 | AI科技大本营(ID:rgznai100)

最近,作者遇到一个非常有趣的概念,它就是用 Python 进行元编程。我想在本文中分享我对该主题的见解。作者希望它可以帮助解决这个问题,因为很多人说这是一个很令人头疼的难题。

什么是元编程?

用一句话来说:“元编程是一种编写代码去操纵代码的行为。”

等一下,是的,你没有看错,代码操纵代码,听起来是不是很迷人很有力量?好吧,实际上是的。

在python中,元编程可以表述为:“元编程是一种构建函数和类的行为,可以通过修改、包装现有代码或生成代码来操作代码。” 泛泛来说,只要是与编程相关的编程就算是元编程了。举个例子来说,若编程甲可以输出 A - Z,那么写程序甲算「编程」;而程序乙可以生成程序甲(也许还会连带着运行它输出 A - Z),那么编写程序乙的活动,就可以算作 meta-programming 了。

Python中的元编程可以通过以下方式实现:一是修饰器,二是元类。

接下来,让我们一一去熟悉它们。

修饰器

修饰器是一种在现有函数中添加新的功能而不修改其原始结构的方法。

例如,我们有以下三个函数:

现在我们需要在函数被调用时输出函数名和参数值。这应适用于上述所有三个函数。

最直接的方式是向所有三个函数添加打印/日志语句。但这听起来像是重复性的工作,我们得需要修改每个函数体。

我们能做得更好吗?当然可以,因为我们是程序员,程序员是最聪明的。我们可以通过编写修饰函数并且不修改任何现有的函数主体来实现这一点。

真棒!在上面的代码片段中,my_decorator 是一个修饰函数。我们用 @my_decorator 来修饰这三个功能,我们并没有接触到现有的函数主体来添加这个输出功能。

所以,基本上,修饰器是个高阶函数,它们将一个函数作为参数,并返回另一个函数。在这里,my_decorator 将函数作为参数,并返回 wrapper_function,其中 wrapper_function 将我们的输出功能添加到 func 中。

当然,修饰器还有其他更多功能,但这只是 Python 中修饰器的简要介绍。

元类

现在我们已经了解了修饰器,他们的功能是修饰函数。但是元编程比修饰器更重要,例如元类。

元类是类的特殊类型,而不是 Python 中的普通类。在普通类定义其自身实例的行为时,元类定义了普通类及其实例的行为。

元类可以向普通类添加或删去方法或字段。python 中有一个特殊的类,叫类型类,默认情况下它是一个元类。所有自定义类型类都必须从类型类继承。

举个例子,如果我们有一个带有三个类方法的 Calc 类,并且我们想为其中一个类中的所有方法提供调试功能,那么我们可以为此使用一个元类。

首先,我们需要创建一个具有调试功能的元类 MetaClassDebug,并使 Calc 类继承 MetaClassDebug。

而且,当我们从 Calc 类调用任何方法时,它将被我们的 debug_function 调用。

这样,我们可以向类中的所有方法添加新行为,还可以使用元类控制类的实例创建。通过使用元类,我们可以取得很多成就,例如在类中添加方法或字段,从类中删除方法或字段等等。

原文链接:

https://medium.com/better-programming/meta-programming-in-python-7fb94c8c7152

(*本文为 AI科技大本营编译文章,请微信联系 1092722531)

推荐阅读

http://www.lbrq.cn/news/1280377.html

相关文章:

  • 动态网站的设计与实现/短信广告投放
  • 创建一个网站多少钱/百度投诉中心24小时电话
  • 做淘宝美工的网站/樱花12e56
  • 网站开发完整的解决方案/注册网站免费注册
  • 网站开发工资淄博/品牌传播推广方案
  • wordpress the7/seo外包方法
  • 怎么用vps做网站/如何提高百度搜索排名
  • 网站建设规划ppt/西安seo服务公司
  • 义乌外贸网站制作/seoul是韩国哪个城市
  • 织梦模板可以在wordpress用/windows优化大师有必要安装吗
  • 烟台做网站公司/成人职业技能培训有哪些项目
  • 梭子手做鱼网站/武汉网络推广有限公司
  • 天天自学网网址/苏州seo报价
  • 宁波市镇海建设交通局网站首页/网站制作的服务怎么样
  • 顺昌网站建设/数据分析报告
  • 网站首页新闻模板/深圳seo推广外包
  • 饲料网站源码/深圳今天重大事件新闻
  • 做网站开发app/济南网站seo
  • 2003系统做网站/百度怎么注册自己的网站
  • 北航做网站公司/进入百度首页官网
  • 赤峰网站开发公司/seo的优点
  • 网站建设公司的公司哪家好/财经新闻最新消息
  • 分析网站的关键词/今日新闻
  • 网站建设公司怎么做的/泉州百度关键词优化
  • 最专业的外贸网站建设/新站快速收录
  • 云服务器建网站/阿里云域名查询
  • 代做道路毕业设计网站/关键词seo培训
  • 做电子请帖网站有哪些/seo百度首页排名业务
  • 好推建站/pc网站优化排名
  • 做网站总结体会/优化方案英语
  • 创建属于自己的github Page主页
  • 三、构建一个Agent
  • Java中get()与set()方法深度解析:从封装原理到实战应用
  • Flutter开发实战之测试驱动开发
  • 解决ubantu系统下matplotlib中文乱码问题
  • AWD的攻击和防御手段