Python是一种优秀的解释性编程语言,有自己的语法。指定如何编写和执行编程语言的一组准则称为语法(由计算机的运行时系统和人类开发人员共同执行)。Perl、C 和 Java 在语法上都与 Python 密切相关。不过,这些语言之间存在一些明确的区别。创建 Python 时,高可读性是一个优先考虑的因素。
在本文中,让我们尝试了解 Python 中“@”(at) 符号的多种用法及其实现。
Python语言中“@”符号的两种主要用法如下:
- 作为装饰者
- 对于矩阵乘法(作为二元运算符)
在学习“@”作为装饰器的使用之前,我们先来了解一下什么是装饰器,它的用途是什么。
什么是装饰器?
称为装饰器的函数接受另一个函数作为输入,通过添加一些功能来修改它,然后返回更新后的函数。无需更改原始函数的源代码,就可以做到这一点。
人们可以通过装饰来轻松扩展当前函数的功能。通过将该代码包含在包装函数中,我们可以做到这一点。因此,人们可以简单地在包装函数内添加或更改他们想要的任何代码,而无需以任何方式更改原始方法。
要了解有关装饰器的更多信息,请单击此处。
不使用“@”的装饰器示例
#defining function with the wrapper function def func1(func): def wrapper(): print ( "Begin" ) func() print ( "End" ) return wrapper #defining the function that is passed as parameter def func2(): print ( "AskPython" ) #calling the function x = func1(func2) x() |
输出
在 Python 中使用“@”进行装饰
现在我们已经了解了装饰器是什么,让我们了解一下“@”符号在装饰中的使用。
看一下上面的例子,我们分配了一个变量x,它等于第一个函数(func1),第二个函数(func2)作为其参数传递。
然后我们调用该变量以所需的方式运行函数。与这种方式不同,最简单的方法是在开始第二个函数之前添加一行带有“@”符号的代码,后跟第一个函数的名称。这与上述函数的工作方式相同。使用“@”符号方法的好处是使代码更具可读性和更容易理解。
下面的例子将给出一个清晰的想法。
#defining function with the wrapper function def func1(func): def wrapper(): print ( "Begin" ) func() print ( "End" ) return wrapper #defining the function that is passed as parameter @func1 def func2(): print ( "AskPython" ) #calling the function func2() |
输出
用户会遇到多种装饰器,但最常见的包括
- @property:可以通过使用 @property 装饰器标记来访问像常规属性一样的方法。
- @classmethod:当您需要一个包含类但不是特定于实例的方法时,类方法可能会有所帮助。
- @staticmethod:静态方法与类相关联,而不是与类实例相关联。主要区别是静态方法不会以任何方式更改类。
使用“@”进行矩阵乘法
在Python 3.5中,@运算符可以被重载。它被称为 __ matmul __ 因为它旨在执行矩阵乘法。要了解更多相关信息,请点击此处。
下面是该方法在Python编程语言中的简单实现。
class example( list ): def __matmul__( self , y): x = self return ([[ sum (x[i][k] * y[k][j] for k in range ( len (y))) for j in range ( len (y[ 0 ])) ] for i in range ( len (x))]) x = example([[ 1 , 5 ],[ 2 , 4 ]]) y = example([[ 3 , 3 ],[ 4 , 2 ]]) print ( "OUTPUT: " ) print (x @ y) |
输出
概括
在本文中,我们尝试理解“@”符号的不同用法。除此之外,我们还了解了装饰器、它的用途以及Python编程语言中的好处。要学习更多有关 Python 编程语言相关各种主题的易于理解且详细的文章,请查看我们的课程部分。