翼度科技»论坛 编程开发 python 查看内容

Python教程:@符号的用法

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
@ 符号在 Python 中最常见的使用情况是在装饰器中。一个装饰器可以让你改变一个函数或类的行为。
@ 符号也可以作为一个数学运算符使用,因为它可以在Python中乘以矩阵。本教程将教你如何使用 Python 的@ 符号。
装饰器中使用@ 符号

装饰器是一个接受一个函数作为参数的函数,向其添加一些功能,并返回修改后的函数。
例如,请看下面的代码。
  1. def decorator(func):
  2.     return func
  3. @decorator
  4. def some_func():
  5.     pass
复制代码
这等同于下面的代码。
  1. def decorator(func):
  2.     return func
  3. def some_func():
  4.     pass
  5. some_func = decorator(some_func)
复制代码
装饰器修改了原始函数,而没有改变原始函数中的任何脚本。
让我们看看上述代码片断的一个实际例子。
  1. def message(func):
  2.     def wrapper():
  3.         print("Hello Decorator")
  4.         func()
  5.     return wrapper
  6. def myfunc():
  7.     print("Hello World")
复制代码
@ 符号与装饰器函数的名称一起使用。它应该写在将被装饰的函数的顶部。
  1. @message
  2. def myfunc():
  3.         print("Hello World")
  4. myfunc()
复制代码
输出:
  1. Hello Decorator
  2. Hello World
复制代码
上面的装饰器例子与这段代码做了同样的工作。
  1. def myfunc():
  2.     print("Hello World")
  3. myfunc = message(myfunc)
  4. myfunc()
复制代码
输出:
  1. Hello Decorator
  2. Hello World
复制代码
Python中一些常用的装饰器是:@property ,@classmethod ,和@staticmethod 。
使用@ 符号进行矩阵相乘

从Python 3.5开始,@ 符号也可以作为一个操作符在Python中执行矩阵乘法。
下面的例子是一个在Python中进行矩阵相乘的简单实现。
  1. class Mat(list):
  2.     def __matmul__(self, B):
  3.         A = self #Python小白学习交流群:153708845
  4.         return Mat([[sum(A[i][k]*B[k][j] for k in range(len(B)))
  5.                     for j in range(len(B[0])) ] for i in range(len(A))])
  6. A = Mat([[2,5],[6,4]])
  7. B = Mat([[5,2],[3,5]])
  8. print(A @ B)
复制代码
输出:
  1. [[25, 29], [42, 32]]
复制代码
就这样了。Python 中的@ 符号被用于装饰器和矩阵乘法。
现在你应该明白@ 符号在 Python 中的作用。我们希望你觉得这个教程对你有帮助。

来源:https://www.cnblogs.com/xxpythonxx/p/17712882.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具