python中?@的含義以及基本使用方法
一、表示修飾符。
可以在模塊或者類的定義層內(nèi)對(duì)函數(shù)進(jìn)行修飾。出現(xiàn)在函數(shù)定義的前一行,不允許和函數(shù)定義在同一行。
一個(gè)修飾符就是一個(gè)函數(shù),它將被修飾的函數(shù)作為參數(shù),并返回修飾后的同名函數(shù)或其他可調(diào)用的東西(如果返回不是一個(gè)可調(diào)用的對(duì)象那么會(huì)報(bào)錯(cuò))。
例1:
def funA(desA): print("It's funA") def funB(desB): print("It's funB") @funA def funC(): print("It's funC")
運(yùn)行結(jié)果:
It's funA
例2:
可以看出,該例子中@test等價(jià)于 test(xxx()),但是這種寫(xiě)法你得考慮python代碼的執(zhí)行順序。
def test(func): print("a") return func() @test def xxx(): print('Hello world!')
運(yùn)行結(jié)果:
a
Hello world!
例3:
為更深刻理解該用法,來(lái)個(gè)復(fù)雜點(diǎn)的嵌套型。
def funA(desA): print("It's funA") print('---') print(desA) desA() print('---') def funB(desB): print("It's funB") @funB @funA def funC(): print("It's funC")
運(yùn)行結(jié)果:
It's funA
---
<function funC at 0x00000252D2545550>
It's funC
---
It's funB
解析:
- @funB 修飾裝飾器@funA,@funA 修飾函數(shù)定義def funC(),將funC()作為funA()的參數(shù),再將funA(funC())作為funB()的參數(shù)。 執(zhí)行的時(shí)候由上而下,先執(zhí)行funA(funC()),再執(zhí)行funB(funA(funC()))。注意,funC()并不執(zhí)行,除非funA()函數(shù)中給出了執(zhí)行funA()的代碼。
- 打印desA,其傳的是funC()的地址,即desA現(xiàn)在為函數(shù)desA()。 執(zhí)行desA()即執(zhí)行funC(),desA=desA()=funC()。
二、表示矩陣乘法。
? ? ? ? 不常用。
例:
import torch n=100 x = torch.ones(n,2) x[:,0].uniform_(-1.,1) # 第一列變換至(-1.,1) 之間 print(x[:5]) # 輸出前5行 a = torch.tensor([3.,2.]) # 一維Tensor print(a) print(a.shape) y = x@a print(y) print(y.shape)
輸出結(jié)果:
tensor([[ 0.8230,? 1.0000],
? ? ? ? [ 0.2427,? 1.0000],
? ? ? ? [-0.7416,? 1.0000],
? ? ? ? [-0.1267,? 1.0000],
? ? ? ? [ 0.7767,? 1.0000]])
tensor([3., 2.])
torch.Size([2])
tensor([ 4.4691,? 2.7281, -0.2249,? 1.6198,? 4.3302,? 3.3386,? 1.9908, -0.8602,
? ? ? ? ?4.9401,? 1.9773,? 4.5304, -0.1322,? 3.9059, -0.6714,? 1.8961,? 3.7886,
? ? ? ? ?0.8241,? 4.4958,? 2.2765,? 2.0459,? 3.6542,? 3.0824,? 2.8941,? 1.0526,
? ? ? ? ?4.8735,? 1.4954,? 3.0208,? 4.0778,? 2.3491,? 2.2261,? 3.1072,? 1.0640,
? ? ? ? ?1.7861, -0.8534,? 3.2532,? 1.5553,? 0.2124,? 3.6449,? 1.6078, -0.1138,
? ? ? ? ?4.2842,? 3.7184,? 2.2547,? 3.4069,? 3.6274,? 0.4879,? 1.4638,? 3.9289,
? ? ? ? ?3.3475,? 4.1895,? 1.5572,? 0.8312,? 2.9297, -0.9266,? 0.4067,? 2.5237,
? ? ? ? ?0.6808,? 4.9553,? 3.3838,? 0.5514,? 4.8429,? 0.0513,? 3.4206,? 0.3634,
? ? ? ? ?4.7817,? 3.0385,? 2.3276, -0.0794,? 3.4981,? 4.3776, -0.8681, -0.4573,
? ? ? ? ?3.6906,? 1.2463,? 1.4817,? 4.0007,? 4.7871,? 2.5638,? 4.2755,? 3.1731,
? ? ? ? ?3.4726,? 2.1015, -0.8896,? 1.4156,? 1.2603,? 4.0047,? 3.3631,? 3.5998,
? ? ? ? ?3.2414, -0.1534,? 3.6266,? 0.3750,? 4.4118, -0.0199,? 1.6172,? 3.2992,
? ? ? ? -0.2325,? 1.8240,? 0.5580,? 2.1420])
torch.Size([100])
總結(jié)
到此這篇關(guān)于python中@的含義以及基本使用方法的文章就介紹到這了,更多相關(guān)python中@用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Matplotlib圖表不能在Pycharm中顯示的問(wèn)題
今天小編就為大家分享一篇解決Matplotlib圖表不能在Pycharm中顯示的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05python爬蟲(chóng)解決驗(yàn)證碼的思路及示例
這篇文章主要介紹了python爬蟲(chóng)解決驗(yàn)證碼的思路及示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08keras實(shí)現(xiàn)多GPU或指定GPU的使用介紹
這篇文章主要介紹了keras實(shí)現(xiàn)多GPU或指定GPU的使用介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06python 遞歸深度優(yōu)先搜索與廣度優(yōu)先搜索算法模擬實(shí)現(xiàn)
這篇文章主要介紹了python 遞歸深度優(yōu)先搜索與廣度優(yōu)先搜索算法模擬實(shí)現(xiàn) ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-10-10python獲取微信企業(yè)號(hào)打卡數(shù)據(jù)并生成windows計(jì)劃任務(wù)
由于公司的系統(tǒng)用的是Java版本,開(kāi)通了企業(yè)號(hào)打卡之后又沒(méi)有預(yù)算讓供應(yīng)商做數(shù)據(jù)對(duì)接,所以只能自己搗鼓這個(gè),以下是個(gè)人設(shè)置的一些內(nèi)容,僅供大家參考2019-04-04利用Chatgpt開(kāi)發(fā)一款加減乘除計(jì)算器(Python代碼實(shí)現(xiàn))
這篇文章主要為大家詳細(xì)介紹了如何利用Chatgpt開(kāi)發(fā)一款加減乘除計(jì)算器(用Python代碼實(shí)現(xiàn)),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02pytorch關(guān)于Tensor的數(shù)據(jù)類型說(shuō)明
這篇文章主要介紹了pytorch關(guān)于Tensor的數(shù)據(jù)類型說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07Python編寫(xiě)通訊錄通過(guò)數(shù)據(jù)庫(kù)存儲(chǔ)實(shí)現(xiàn)模糊查詢功能
數(shù)據(jù)庫(kù)存儲(chǔ)通訊錄,要求按姓名/電話號(hào)碼查詢,查詢條件只有一個(gè)輸入入口,自動(dòng)識(shí)別輸入的是姓名還是號(hào)碼,允許模糊查詢。這篇文章主要介紹了Python編寫(xiě)通訊錄,支持模糊查詢,利用數(shù)據(jù)庫(kù)存儲(chǔ),需要的朋友可以參考下2019-07-07Python文件讀寫(xiě)及常用文件的打開(kāi)方式
這篇文章主要介紹了Python文件讀寫(xiě)及常用文件的打開(kāi)方式,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09