这段代码太难啦,@符号在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中都有哪些作用?的主要内容,如果未能解决你的问题,请参考以下文章