最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中@符號實例詳解

 更新時間:2022年12月20日 07:46:59   作者:ningqingzy  
@是一個裝飾器,針對函數,起調用傳參的作用,下面這篇文章主要給大家介紹了關于python中@符號的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

python中@是什么意思

通常我們所見的@符號是用于郵箱中,而在python中@符號也有著重要的作用:一個是表示修飾符,另一個則是表示矩陣乘法(不常用)。表示修飾符時,可以在模塊或者類的定義層內對函數進行修飾。雖然表示矩陣乘法不常用,但是也是很好的一個方法。值得注意的是@符號的這兩種含義,都是在python3.5以后的。

一、表示修飾符

用做函數的修飾符,可以在模塊或者類的定義層內對函數進行修飾;

出現在函數定義的前一行,不允許和函數定義在同一行。

一個修飾符就是一個函數,它將被修飾的函數作為參數,并返回修飾后的同名函數或其他可調用的東西(如果返回不是一個可調用的對象那么會報錯)。

#Example 1
def test(func):
    print("a")
    return func()
    
@test     #從這里可以看出@test等價于 test(xxx())
def xxx():
    print('Hello world!')

運行結果:

a
Hello world!

可以看出,先執(zhí)行test()下的print(“a”),再return func()即返回xxx()函數。

那么,如果前后連續(xù)出現兩個及以上的@修飾器呢?處理的順序如何?看下面的例子:

#Example 2
def FA(fn):
    def warp():
        return "<a>"+fn()+"<a>"
    return warp
def FB(fn):
    def warp():
        return "<b>"+fn()+"<b>"
    return warp
    
@FA         #相當于makebold(test1),也就是把當前函數作為入參傳過去
def test1():
    return "test1"
 
@FB
def test2():
    return "test2"
    
@FA
@FB
def test3():     #函數和裝飾器是倒著執(zhí)行的,從下往上,從內而外,一層層執(zhí)行
    return "test3"
    
print(test1())
print(test2())
print(test3())

運行結果:

<a>test1<a>
<b>test2<b>
<a><b>test3<b><a>

以上結果可以看出,函數前面有兩個及以上裝飾器時,先執(zhí)行函數,返回的值作為參數傳入上一層即FA(),FA()返回的值傳入FB(),最終得到FB()返回的值。

二、表示矩陣乘法

#Example 3
class Mat(list):
    def __matmul__(self, B):
        A = self
        return Mat([[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 = Mat([[1,3],[7,5]])
B = Mat([[6,8],[4,2]])
print(A @ B)

運行結果:

[[18, 14], [62, 66]]

總結 

到此這篇關于python中@符號實例詳解的文章就介紹到這了,更多相關python中@詳解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

南和县| 茂名市| 永安市| 互助| 甘南县| 保德县| 正定县| 甘孜县| 秭归县| 遂溪县| 福州市| 望都县| 宁河县| 开平市| 苍南县| 萨迦县| 霍山县| 科技| 贺兰县| 申扎县| 金门县| 塔河县| 宜良县| 古丈县| 阿鲁科尔沁旗| 宣武区| 积石山| 旌德县| 攀枝花市| 阿尔山市| 增城市| 集安市| 永福县| 晴隆县| 滦平县| 垫江县| 博客| 霞浦县| 来凤县| 昌图县| 滨海县|