在 Python 中,符号 @ 主要有两个用法:一是作为装饰器(decorators)的标识符,二是用来执行矩阵乘法。本文将从基础到进阶逐一讲解这两个用法,并给出相应的代码示例。

1. 装饰器(Decorator)

在 Python 中,装饰器是一种用于在函数运行前或运行后添加功能的方案。通过使用 @ 符号,可以方便地将装饰器应用到函数或方法上。装饰器本质上是一个接受函数作为参数,并返回一个新函数的高阶函数。

基础示例

以下是一个简单的装饰器示例,它在函数执行前后输出一些信息:

def my_decorator(func):
    def wrapper():
        print("函数执行前")
        func()
        print("函数执行后")
    return wrapper

@my_decorator
def say_hello():
    print("你好,世界!")

say_hello()

在这个示例中,装饰器 my_decorator 包裹了 say_hello 函数,当我们调用 say_hello() 时,实际执行的是 wrapper 函数,这样就添加了额外的功能。

进阶示例

装饰器也可以传递参数。例如,如果你想创建一个装饰器,它接受一个参数来控制输出的内容,可以这样做:

def repeat(num_times):
    def decorator_repeat(func):
        def wrapper(*args, **kwargs):
            for _ in range(num_times):
                func(*args, **kwargs)
        return wrapper
    return decorator_repeat

@repeat(3)
def greet(name):
    print(f"你好,{name}!")

greet("Alice")

在这个示例中,装饰器 repeat 接受一个 num_times 参数,然后返回一个新的装饰器 decorator_repeat。当 greet 被调用时,它会打印三次打招呼的消息。

2. 矩阵乘法

从 Python 3.5 开始,@ 符号也被引入用于矩阵乘法。这一特性极大地方便了对数组和矩阵数据的操作,尤其是在使用 NumPy 库时。

基础示例

首先,我们需要安装并导入 NumPy 库,可以使用以下命令安装:

pip install numpy

然后使用 @ 进行矩阵乘法:

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

C = A @ B
print(C)

在此示例中,矩阵 AB 通过 @ 运算符进行乘法运算,结果矩阵 C 将输出:

[[19 22]
 [43 50]]

进阶示例

可以结合使用 @ 符号和其他功能强大的 NumPy 操作,例如进行多维数组的乘法:

import numpy as np

A = np.random.rand(3, 2)  # 3x2 矩阵
B = np.random.rand(2, 3)  # 2x3 矩阵

C = A @ B  # 结果为 3x3 矩阵
print("矩阵 A:\n", A)
print("矩阵 B:\n", B)
print("矩阵 C:\n", C)

在此示例中,我们使用随机数生成的矩阵进行乘法运算,最终得到一个新的矩阵 C

总结

通过以上的讲解,我们可以看到 @ 符号在 Python 中具有丰富的用法。无论是用于装饰器来增强函数,还是用于执行矩阵乘法,它都展示了 Python 简洁而强大的特性。理解和掌握这些用法,将有助于我们更高效地编写 Python 代码。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部