学了8年Python,被这8行炫技代码惊呆了!转载
原创今天让我们来看一段华丽的代码。它可以定义任何可以接受两个参数的函数作为特殊运算符。
例如,我们知道例如,我们知道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
,实际上应该理解如下。,实际上应该理解如下。这实际上应该被理解为。
-
到
是Change(range)
返回实例返回示例返回实例 -
2 | 到
生成一个中间对象,我们假定它是x
-
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案例!
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除