python中|python中 @的含义以及基本使用方法
目录
- 一、表示修饰符。
- 二、表示矩阵乘法。
- 总结
一、表示修饰符。 可以在模块或者类的定义层内对函数进行修饰。出现在函数定义的前一行,不允许和函数定义在同一行。
一个修饰符就是一个函数,它将被修饰的函数作为参数,并返回修饰后的同名函数或其他可调用的东西(如果返回不是一个可调用的对象那么会报错)。
例1:
def funA(desA): print("It's funA") def funB(desB): print("It's funB") @funAdef funC(): print("It's funC")
运行结果:
It's funA例2:
可以看出,该例子中@test等价于 test(xxx()),但是这种写法你得考虑python代码的执行顺序。
def test(func):print("a")return func()@testdef xxx():print('Hello world!')
运行结果:
a例3:
【python中|python中 @的含义以及基本使用方法】Hello world!
为更深刻理解该用法,来个复杂点的嵌套型。
def funA(desA): print("It's funA") print('---') print(desA) desA() print('---') def funB(desB): print("It's funB") @funB@funAdef funC(): print("It's funC")
运行结果:
It's funA解析:
---
It's funC
---
It's funB
- @funB 修饰装饰器@funA,@funA 修饰函数定义def funC(),将funC()作为funA()的参数,再将funA(funC())作为funB()的参数。 执行的时候由上而下,先执行funA(funC()),再执行funB(funA(funC()))。注意,funC()并不执行,除非funA()函数中给出了执行funA()的代码。
- 打印desA,其传的是funC()的地址,即desA现在为函数desA()。 执行desA()即执行funC(),desA=desA()=funC()。
二、表示矩阵乘法。 不常用。
例:
import torch n=100x = torch.ones(n,2)x[:,0].uniform_(-1.,1)# 第一列变换至(-1.,1) 之间print(x[:5])# 输出前5行a = torch.tensor([3.,2.]) # 一维Tensorprint(a)print(a.shape)y = x@aprint(y)print(y.shape)
输出结果:
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])
总结 到此这篇关于python中@的含义以及基本使用方法的文章就介绍到这了,更多相关python中@用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- python神经网络使用Keras进行模型的保存与读取
- 安装appium踩过的坑
- vue项目中,App.vue如何调用
- Elastic Search中mapping的问题
- AndroidThread和HandlerThread的差别
- 小记--------spark的Master的Application注册机制源码分析及Master的注册机制原理分析
- 汽车|估值62.6亿元的阿维塔是否生不逢时?
- 投稿|Twitter 的理想化未来:要协议,而非平台?
- 教你简单买到最好的笔记本
- 10大装机过程中常规性出错