我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python中@符号实例详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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!

可以看出,先执行test()下的print(“a”),再return func()即返回xxx()函数

那么,如果前后连续出现两个及以上的@修饰器呢?处理的顺序如何?看下面的例子:

#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():     #函数和装饰器是倒着执行的,从下往上,从内而外,一层层执行
    return "test3"
    
print(test1())
print(test2())
print(test3())

运行结果:

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

以上结果可以看出,函数前面有两个及以上装饰器时,先执行函数,返回的值作为参数传入上一层即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中@详解内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python中@符号实例详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python中@符号实例详解

@是一个装饰器,针对函数,起调用传参的作用,下面这篇文章主要给大家介绍了关于python中@符号的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
2022-12-20

Python字符串处理实例详解

Python字符串处理实例详解 一、拆分含有多种分隔符的字符串 1.如何拆分含有多种分隔符的字符串 问题: 我们要把某个字符串依据分隔符号拆分不同的字段,该字符串包含多种不同的分隔符,例如:s = "ab;cd|efg|hi,jkl|mnt
2022-06-04

Python中的连接符(+、+=)示例详解

前言 本文通过在一段示例代码中发现的问题,来给大家详细介绍了Python中的连接符(+、+=),下面话不多说,来看详细的介绍吧。 假设有下面一段代码:a = [1, 2, 3, 4] b = [5, 6, 7, 8, 9] c = [11,
2022-06-04

Linux 中的通配符详解及实例

Linux 中的通配符详解及实例 一 通配符二 实战[root@localhost ~]# mkdir dy [root@localhost ~]# cd dy [root@localhost dy]# touch dzp dzp2 dzp
2022-06-04

C++ 双冒号::符号详解

本文主要介绍了C++ 双冒号::符号详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-09

python 遍历字符串(含汉字)实例详解

python 遍历字符串(含汉字)实例详解s = "中国china" for j in s:print j首先一个,你这个'a'是什么编码?可能不是你所想的gbk>>> a='中国' >>> a这样试试看,如果出来是6个字(word),说明
2022-06-04

Python 基础之字符串string详解及实例

Python字符串(string) 详解 及 代码 Python的字符串可以使用单引号('), 双引号("), 三引号('''); 三引号(''')里面, 可以添加单引号和双引号, 也可以通过转义序列()添加; 字符串放在一起自动连接成为一
2022-06-04

Python运算符重载详解及实例代码

Python运算符重载Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同。鉴于它的特殊性,今天就来讨论一下Python运算符重载。Python语言本身提供了很多魔法方法,它的运算符重载就是通过重写这些
2022-06-04

python中np.random.permutation函数实例详解

np.random.permutation是numpy中的一个函数,它可以将一个数组中的元素随机打乱,返回一个打乱后的新数组,下面这篇文章主要给大家介绍了关于python中np.random.permutation函数的相关资料,需要的朋友可以参考下
2023-05-14

Python中self用法实例详解

这篇文章主要介绍了Python中self用法详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-03-22

Python中的符号

1.算数运算符2.复合赋值运算符3.常用的格式符号
2023-01-31

python字符串的多行输出的实例详解

1、字符串的每行末尾使用 \ 续行 以多行的形式书写字符串,每行的末尾使用 \ 续行。需要注意输出内容为一行。>>> string = '第一行\ … 第二行\ … 第三行' >>> print(string) ‘第一行第二行第三行'2、使
2022-06-02

python 查找字符串是否存在实例详解

python中查找指定的字符串的方法如下: code#查询 def selStr():sStr1 = 'jsjtt.com'sStr2 = 'com'#index查询某个字符串,返回索引nPos = sStr1.index(sStr2)if
2022-06-04

Python中的SOLID原则实例详解

SOLID原则是由RobertC.Martin提出的以首字母缩写命名的编码准则,它代表了五种不同的编码习惯,下面这篇文章主要给大家介绍了关于Python中SOLID原则的相关资料,需要的朋友可以参考下
2023-02-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录