这段代码太难啦,@符号在Python中都有哪些作用?

Posted 朝阳区靓仔_James

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这段代码太难啦,@符号在Python中都有哪些作用?相关的知识,希望对你有一定的参考价值。

简单说@符号的作用有两个:装饰器和矩阵相乘。

装饰器

装饰器肯定是它常见的用法。这里给一个例子。这个看似简单的例子,其实知识点挺多的。如果你能轻松看明白,应该可以击败90%的Python学习者。

class Pizza(object):
    def __init__(self):
        self.toppings = []

    def __call__(self, topping):
        # 在方法定义前使用'@pizza实例'时,那个方法会被作为参数传给本方法
        self.toppings.append(topping())

    def __repr__(self):
        return str(self.toppings)

pizza = Pizza()

@pizza
def cheese():
    return 'cheese'
  
@pizza
def sauce():
    return 'sauce'

print(pizza)

输入结果:

['cheese', 'sauce']

矩阵相乘

在Python 3.5开始,Python引入了2个新的操作符和3个魔法函数,它们就是:

  • 用于矩阵相乘的@和@=,后者类似于+=等符号,用于矩阵相乘并复制。
  • 三个函数分别是:和@配套的__matmul__, rmatmul;和@=配套的__imatmul__


虽然Python支持了这两个操作符,并提供了相应的魔法函数,但Python内置库中并没有实现这些函数的类。

如果要用这些操作符,需要类库的开发者自己去实现,比如numpy就实现了@操作符,但它没有实现@=。

下面提供一个例子,我们来实现一下这个操作符:

class Matrix(list):
    def __matmul__(self, B):
        A = self
        return Matrix([[sum(A[i][k] * B[k][j] for k in range(len(B)))
                    for j in range(len(B[0])) ] for i in range(len(A))])
A = Matrix([[1, 2],[3, 4]])
B = Matrix([[5, 6],[7, 8]])
print(A @ B)

输出结果:

[[19, 22], [43, 50]]

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(文末获取!)

温馨提示:篇幅有限,已打包文件夹,获取方式在“文末”!!!

二、Python必备开发工具

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、Python练习题

检查学习结果。

七、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

以上是关于这段代码太难啦,@符号在Python中都有哪些作用?的主要内容,如果未能解决你的问题,请参考以下文章

python中都有哪些包

英语中都有哪些标点符号?

英语中都有哪些标点符号,各代表啥意思

python中都有哪些简单的算法?

java中都有哪些类?

如何查询matlab中都有哪些函数