python中 @的含义以及基本使用方法
作者:Dust_Evc 发布时间:2022-12-24 04:58:48
一、表示修饰符。
可以在模块或者类的定义层内对函数进行修饰。出现在函数定义的前一行,不允许和函数定义在同一行。
一个修饰符就是一个函数,它将被修饰的函数作为参数,并返回修饰后的同名函数或其他可调用的东西(如果返回不是一个可调用的对象那么会报错)。
例1:
def funA(desA):
print("It's funA")
def funB(desB):
print("It's funB")
@funA
def funC():
print("It's funC")
运行结果:
It's funA
例2:
可以看出,该例子中@test等价于 test(xxx()),但是这种写法你得考虑python代码的执行顺序。
def test(func):
print("a")
return func()
@test
def xxx():
print('Hello world!')
运行结果:
a
Hello world!
例3:
为更深刻理解该用法,来个复杂点的嵌套型。
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")
运行结果:
It's funA
---
<function funC at 0x00000252D2545550>
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=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)
输出结果:
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])
来源:https://blog.csdn.net/Dust_Evc/article/details/121852790


猜你喜欢
- 一. 虚拟环境搭建在开发中安装模块的方法:pip install 模块名称之前我们安装模块都是直接在物理环境下安装,这种安装方法,后面一次安
- 本文实例总结了python调用函数、类和文件操作。分享给大家供大家参考,具体如下:调用函数有三种方式一,导入整个模块(所有函数)导入 imp
- 在windows 2003下,在运行web应用程序的时候出现一下错误: 服务器无法处理请求,-->对路径“C:/temp/mytest.tx
- 什么是 JScript?JScript 是由微软开发的活动脚本语言,基于 ECMAScript 规范实现。Internet Explorer
- 最近在内部讨论关于”完美三栏”的话题,看到一篇”In Search of the Holy Grail“,相当的好.故此翻译之.In Sea
- 本章内容如何从数据库中读取用户对象源码分析如何从数据库中读取用户对象?1前面我们分析认证的时候就会发现他在DaoAuthentication
- 本文实例为大家分享了OpenCV实现直线检测的具体代码,供大家参考,具体内容如下1 介绍本文主要介绍OpenCV自带的直线检测函数Hough
- 设计图是这样:可是做出来是这样:出现了一行连着。。要知道工作上总有些ui没事做喜欢指指点点。后来翻查官方手册发现了这个参数:附上网址:htt
- MAC上的PyCharm中默认的python解释器是python2的,windows下的没用过不是很清楚,所以特来记录下设置python3解
- 通用用法但上图的字段名,类型需要根据不同接口填写,如某服务接口:因而对应的上传代码如下:# 输出参数:请求响应报文import reques
- 连接Access数据库string connStr = @"Data Source=D:\database.mdb; Provid
- 本文实例讲述了RC4文件加密的python实现方法。分享给大家供大家参考。具体分析如下:基于RC4流加密算法,使用扩展的16*16的S盒,3
- 以下测试用于去除任何字符串中连线的分隔符 --去除字符串中连续的分隔符 declare @str nvarchar(200) declare
- 不好意思,标题比较啰嗦,因为这次的流水账确实属于一个比较细节的小东西,下面详细讲:1需求最近在使用electron-vue 开发一个跨平台的
- 两个进程发生死锁的典型例子是:进程T1中获取锁A,申请锁B;进程T2中获取锁B,申请锁A,我们下面动手来演示一下这种情况:1. 创建一个Da
- defaultdict 主要用来需要对 value 做初始化的情形。对于字典来说,key 必须是 hashable,immutable,un
- The Only Thing We Have To Fear Is Premature Standardization原文地址:http:/
- 本文实例讲述了PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作。分享给大家供大家参考,具体如下:在PHP中,会遇到这样的情况,子类
- 前言数据处理过程中,经常会遇到数据有缺失值的情况,本文介绍如何用Pandas处理数据中的缺失值。一、什么是缺失值对数据而言,缺失值分为两种,
- 在flask中可以像go和angular那样使用页面模版(template),可以将HTML页面显示进行模版化,通过参数传递与页面进行数据交