Py学习  »  Python

一文带您解读 Python 中的 “@” 符号:多功能的简洁高效操作符

新语数据故事汇 • 11 月前 • 229 次点击  

在 Python 编程中,理解 “@” 符号的多重用途至关重要。不论是使用装饰器来增强函数的功能,还是进行复杂的矩阵运算,或者通过魔术方法来自定义操作符,“@” 符号都扮演着关键角色。掌握这一符号的使用,不仅能让你的代码更加简洁高效,还能提升其可读性。接下来我们简单介绍 “@” 符号的不同用法,并通过实例展示如何灵活应用它。

@符号作用一:“@” 符号与装饰器的应用

在 Python 中,“@” 符号主要用于装饰器。装饰器是一种强大且灵活的工具,用来在不修改函数或方法代码的情况下扩展或修改它们的行为。

下面是一个简单的示例:一个名为 log_function_call 的装饰器函数,用于记录被装饰函数的调用信息。这个装饰器应用于 add 函数,使其在调用时打印函数名、参数、结果等信息。当我们调用 add(5, 3) 时,它会打印出有关函数调用的信息,执行加法操作,记录结果,并返回该结果。变量 result 将存储值 8,即 5 + 3 的结果。

# Define a decorator functiondef log_function_call(func):    def wrapper(*args, **kwargs):        print(f"Calling function {func.__name__} with arguments {args} and keyword arguments {kwargs}")        result = func(*args, **kwargs)        print(f"Function {func.__name__} returned {result}")        return result    return wrapper # Apply the decorator to a function@log_function_calldef add(a, b):    return a + b # Call the decorated functionresult = add(5, 3)print(result)

@符号作用二: 使用 “@” 操作符进行矩阵乘法

Python 中引入了 @ 操作符专门用于矩阵乘法。通过 NumPy 库,可以利用 @ 操作符计算矩阵的乘积。下面的示例 Python 代码使用了 NumPy 库来执行矩阵乘法。m1 和 m2 这两个矩阵被定义为 NumPy 数组。在这里@ 操作符被用来计算 m1 和 m2 的矩阵乘积。NumPy 使用@操作符简化了 Python 中的矩阵运算,使其在涉及矩阵和数组的数学和数值计算中成为高效的选择。

import numpy as np
m1 = np.array([[1, 2], [3, 4]])m2 = np.array([[1, 2], [2, 1]])
print(m1 @ m2)

@符号作用三:使用 __matmul__ 方法自定义@ 操作符

通过定义类的 __matmul__ 方法,可以自定义 @ 操作符的行为。例如,定义一个 Dog 类,其 __matmul__ 方法返回自定义的字符串。例如:

class Dog:    def __matmul__(self, other):        return f'hello {other}'    dog = Dog()
print(dog @ 500)

默认情况下,对象没有 @ 操作符的功能,除非我们定义了 __matmul__ 魔术方法。


上述内容简要阐述了 Python 中 “@” 符号的作用,展示了其在装饰器、矩阵乘法和自定义操作符中的应用。通过理解这些用途,开发者可以更好地编写整洁、高效的代码。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/173367
 
229 次点击