欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中@符號實例詳解

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

python中@是什么意思

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

一、表示修飾符

用做函數(shù)的修飾符,可以在模塊或者類的定義層內(nèi)對函數(shù)進行修飾;

出現(xiàn)在函數(shù)定義的前一行,不允許和函數(shù)定義在同一行。

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

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

運行結(jié)果:

a
Hello world!

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

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

#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),也就是把當前函數(shù)作為入?yún)鬟^去
def test1():
    return "test1"
 
@FB
def test2():
    return "test2"
    
@FA
@FB
def test3():     #函數(shù)和裝飾器是倒著執(zhí)行的,從下往上,從內(nèi)而外,一層層執(zhí)行
    return "test3"
    
print(test1())
print(test2())
print(test3())

運行結(jié)果:

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

以上結(jié)果可以看出,函數(shù)前面有兩個及以上裝飾器時,先執(zhí)行函數(shù),返回的值作為參數(shù)傳入上一層即FA(),F(xiàn)A()返回的值傳入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)

運行結(jié)果:

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

總結(jié) 

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

相關(guān)文章

  • python中update()函數(shù)的使用方法

    python中update()函數(shù)的使用方法

    Python字典update()方法用于更新字典中的鍵/值對,可以修改存在的鍵對應的值,也可以添加新的鍵/值對到字典中,這篇文章主要給大家介紹了關(guān)于python中update()函數(shù)的使用方法,需要的朋友可以參考下
    2024-02-02
  • 詳解python3中用HTMLTestRunner.py報ImportError: No module named ''StringIO''如何解決

    詳解python3中用HTMLTestRunner.py報ImportError: No module named ''

    這篇文章主要介紹了詳解python3中用HTMLTestRunner.py報ImportError: No module named 'StringIO'如何解決,感興趣的可以了解一下
    2019-08-08
  • 淺析Python中的多重繼承

    淺析Python中的多重繼承

    這篇文章主要介紹了Python中的多重繼承,是Python學習中的基本知識,代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Python第三方庫OS庫方法實操

    Python第三方庫OS庫方法實操

    這篇文章主要給大家介紹了關(guān)于Python第三方庫OS庫的相關(guān)資料,os庫主要是對文件和文件夾進行操作,在Python中對?件和?件夾的操作要借助os模塊??的相關(guān)功能,需要的朋友可以參考下
    2024-06-06
  • Python繪制3D曲面圖的示例代碼

    Python繪制3D曲面圖的示例代碼

    Python提供了多種庫和工具,使得創(chuàng)建和定制3D曲面圖變得簡單,本文將介紹如何使用Matplotlib和mpl_toolkits.mplot3d庫繪制3D曲面圖,感興趣的可以了解下
    2024-04-04
  • 對python中return和print的一些理解

    對python中return和print的一些理解

    最近看到視頻中講到python中的print和return的區(qū)別,感到一些迷惑,所以自己上手實踐了一把,下面這篇文章主要給大家介紹了關(guān)于對python中return和print的一些理解,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • Python EOL while scanning string literal問題解決方法

    Python EOL while scanning string literal問題解決方法

    這篇文章主要介紹了Python EOL while scanning string literal問題解決方法,本文總結(jié)出是數(shù)據(jù)庫數(shù)據(jù)出現(xiàn)問題導致這個問題,需要的朋友可以參考下
    2015-04-04
  • 一條命令解決mac版本python IDLE不能輸入中文問題

    一條命令解決mac版本python IDLE不能輸入中文問題

    本文通過一條命令幫助大家解決mac版本python IDLE無法輸入中文問題,需要的朋友可以參考下
    2018-05-05
  • python 實現(xiàn)mysql自動增刪分區(qū)的方法

    python 實現(xiàn)mysql自動增刪分區(qū)的方法

    這篇文章主要介紹了python 實現(xiàn)mysql自動增刪分區(qū)的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Python學習之os包使用教程詳解

    Python學習之os包使用教程詳解

    本文將詳細介紹python的內(nèi)置包——OS?包。OS?包擁有著普遍的操作系統(tǒng)功能,擁有著各種各樣的函數(shù)來操作系統(tǒng)的驅(qū)動功能。快來跟隨小編一起學習一下OS包的使用方法吧
    2022-03-03

最新評論