学了8年Python,被这8行炫技代码惊呆了!转载

原创
小哥 3年前 (2022-10-17) 阅读数 106 #大杂烩

今天让我们来看一段华丽的代码。它可以定义任何可以接受两个参数的函数作为特殊运算符。

例如,我们知道例如,我们知道Python里面的 range 功能,其可接收至少可接收至少功能的功能,其接收至少接收至少1可以接收的最大参数数为3格式是当只有两个参数时,格式是 range(开始, 结束) 把数字从头到尾相加。1,左闭右开。使用今天的方法,它可以写成 开始 |到| 结束 ,如下图所示。,如下图所示。如下图所示。如下图所示。

又比如, urllib.parse.urljoin 您可以将域名与相对路径拼接: urljoin(域名, 相对路径) 我们也可以用如下所示的格式重写它。

这种耀眼但又不实用的功能是如何实现的呢?事实上,原理很简单,只是8行代码:

from functools import partial

class Change(object):
    def __init__(self, func):
        self.func = func
    def __or__(self, other):
        return self.func(other)
    def __ror__(self, other):
        self.func = partial(self.func, other)
        return self

这里有一个盲点和两个真正的知识点。那个盲点是你可能会认为 |到| 是一个角色,但它是3字符;你可以放入字符;你可以放入字符;你可以放入 |拼接| 被视为一个整体,但实际上它被视为一个整体,但它实际上被视为一个整体,但它实际上3零件:左侧部分:左侧 |拼接 和右边的 |

我们添加空格,很明显,当我们添加空格时,很明显

两个实数知识点是两个实数知识点,这是两个实数知识点 __or____ror__ 这两种魔术方法和部分函数 partial 。而 Change 它本身只是一个普通的阶级。本身就是一个普通的班级。这本身就是一个普通的班级。它本身只是一个普通的班级。 __or____ror__ 定义在左侧遇到的此类的实例 | 当右侧相遇时右侧相遇 | 当时的具体行为。当时的特定行为。

让我们逐一来谈一谈。首先 __or__ 。它定义实例相遇的右侧 | 当时的具体行为。当时的特定行为。例如,我们用一个简单的代码来进行测试:

class Test:
    def __init__(self, num):
        self.num = num
    def __or__(self, other):
        print(f在我的右边有一样东西,那就是。我的右手边有东西,那就是。{other})

x = Test(100)
x | 55

运行效果如下图所示。

但如果你把竖线放在左边,他就会报错,如下图所示。,如下图所示。如下图所示。如下图所示。

__ror__ 用来定义,用来定义 | 在实例的左侧,它的行为如下所示。

所以,在我们的第一个例子中,在我们最初的例子中,在我们的第一个例子中,我们的第一个例子 2 |到| 10 ,实际上应该理解如下。,实际上应该理解如下。这实际上应该被理解为。

  1. Change(range) 返回实例返回示例返回实例

  2. 2 | 到 生成一个中间对象,我们假定它是 x

  3. x | 10 生成结果

在我们演示的示例中,演示示例中的,演示示例中的 2 | 到 先入先入 Change 类的 __ror__ 方法中:

def __ror__(self, other):
        self.func = partial(self.func, other)
        return self

其中,在伊始, self.func 初始化实例是我们初始化实例时所做的事情,初始化实例时是我们初始化实例时所做的事情 Change(range) 期间传入参数时传入的参数 range 。所以 partial(self.func, other) 等价于 partial(range, 2) 。关于分部函数 partial 你可以在这里阅读我的文章。你可以在上阅读我的文章,你可以阅读我关于这个主题的文章。你可以阅读我关于这方面的文章。 偏函数:偏函数:偏函数中Python设置默认参数的另一种方法设置默认参数的另一种方法 。简单地说,使用Partial函数,您可以将一部分参数传递给实数函数,然后在一段时间后填充其余参数。

对于日常开发人员来说,拥有实例方法返回的情况可能很少见 self 。有关本文的更多信息,您可以阅读我的这篇文章,网址为 有一天,一种技能:融入Python实现链式调用内部实现 。换句话说,就是 1 | 到 回归,依旧回归,依旧回归,依旧 Change 类的实例,我们将其称为 x 。此实例的属性 self.func 的值是 partial(range, 2)

接下来, x | 10 ,呼叫是呼叫的,呼叫是给呼叫的 __or__ 方法,所以在这一点上,执行是方法,所以在这一点上执行的是 partial(range, 2)(10) 。偏置函数的参数已填充,因此它具有 range 它真的跑了,变成了 range(2, 10)

到目前为止,到目前为止 Change 类,我们将分析它。如你所知,Python在里面,有许多神奇的方法,如果你不想使用 | 你也可以用其他的词,比如你也可以用其他的词。

或者:

或者:

同时,这个同时,这个也,这个同时,这个 Change 类,您甚至可以直接将其用作装饰器。任何可以接受两个参数的函数都可以使用此修饰符。例如。

总而言之。正如您所知道的,我非常反对在工作代码中炫耀,因为它的编写方式很难阅读和维护。今天的炫耀方法,虽然我也不推荐用于工作,但它很短8在代码行内部,它包含了大量的知识,这使得它值得一玩。


最后,我们把你送到最后,我要把你送到最后,我要把你都送到最后,我会把你都送到 20000 红包封红包封

感谢您对《新手学习》的关注Python」的5年的支持

悄悄地说,我觉得它很漂亮。悄悄地说,我觉得它很漂亮。悄悄地说,我觉得它很漂亮。

扫码取款扫码收款扫码收款

推荐阅读:
入门: 最完整的零基学习最全面的零基学习最完整的零基学习Python的问题  | 从零开始学习从零基础学习从零基础学习8个月的Python  | 实战项目 |学Python这是捷径,这是捷径,这是捷径
干货:爬行豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析最佳球员分析 |   从万众期待到口碑惨败!唐探3令人失望  | 笑新伊田图龙记笑新伊田图龙记笑新伊田图龙记 | 谜语之王回答灯谜之王灯谜之王谜语之王 |用Python人山人海素描图人山人海素描图人山人海 Dishonor太火了,我用机器学习做了一个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python日常酷跑游戏日常酷跑游戏日常酷跑游戏!
AI: 会写诗的机器人会写诗的机器人会写诗的机器人 | 给图片上色给图片上色给图片上色 | 预测收入 | 《耻辱》太火了,我用机器学习做了一部迷你推荐系统电影
小工具: Pdf转Word易于修复表单和水印!易于处理的表单和水印!轻松修复桌子和水印!易于修复的形式和水印! | 一键把html将页面另存为网页另存为网页另存为pdf!|  再见PDF提款费!提款费!提款费!提款费用! | 用90构建最强大的代码行构建最强大的代码行构建最强大的代码行PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一个固定的低成本机票提醒!制作一张别针的低价机票提醒! |60代码行做了一个语音墙纸切换,天天见女士!

年度弹出文案年度弹出文案年度爆炸性文案

  • 1). 卧槽!Pdf转Word用Python轻松搞定 !

  • 2).学Python闻起来好香!我用100一行代码做了一个网站,帮助人们做了一行代码,做了一个网站,帮助了人们做了一行代码,帮助了人们PS旅行图片赚鸡腿吃旅行图片赚鸡腿

  • 3).第一次播放量过亿,火爆全网,我分析了《波妹》,发现了这些秘密

  • 4). 80一行行代码!使用Python让救济金做正确的事做做的人做好事的人A梦分身

  • 5).你必须掌握的东西你必须掌握20个python代码,简短而紧凑,永无止境的有用代码,简短而甜蜜,永无止境的有用的代码,简短而紧凑,永无止境的使用代码,简短而甜蜜,永无止境的用途

  • 6). 30个Python古怪技能集古怪小贴士收藏古怪技能集

  • 7). 我总结的80《菜鸟学习专页》《菜鸟学习专页》《菜鸟学习》Python精选干货.pdf》,都是干货

  • 8). 再见Python!我要学Go了!2500词深度分析词深度分析词深度分析 !

  • 9).发现一只舔狗的福利!这Python爬虫神器太酷了,不能自动下载女孩的照片

点击阅读原文点击查看点击点击阅读点击阅读原文点击查看200个Python案例!

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除