python中@的用法

@是一个装饰器,针对函数,起调用传参的作用。

有修饰和被修饰的区别,作为一个装饰器,用来修饰紧跟着的函数(可以是另一个装饰器,也可以是函数定义)。

代码1

def funa(desa):

print("it's funa")

def funb(desb):

print("it's funb")

@funa

def func():

print("it's func")

结果1

it's funa

分析1

@funa 修饰函数定义def func(),将func()赋值给funa()的形参。

执行的时候由上而下,先定义funa、funb,然后运行funa(func())。

此时desa=func(),然后funa()输出‘it's funa'。

代码2

def funa(desa):

print("it's funa")

def funb(desb):

print("it's funb")

@funb

@funa

def func():

print("it's func")

结果2

it's funa

it's funb

分析2

@funb 修饰装饰器@funa,@funa 修饰函数定义def func(),将func()赋值给funa()的形参,再将funa(func())赋值给funb()。

执行的时候由上而下,先定义funa、funb,然后运行funb(funa(func()))。

此时desa=func(),然后funa()输出‘it's funa';desb=funa(func()),然后funb()输出‘it's funb'。

代码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")

结果3

it's funa

< function func at 0x000001a5ff763c80 >

it's func

it's funb

分析3

同上,为了更直观地看参数传递,打印desa,其传的是func()的地址,即desa现在为函数desa()。

执行desa()即执行func(),desa=desa()=func()。

代码4

def funa(desa):

print("it's funa")

def funb(desb):

print("it's funb")

print('---')

print(desb)

@funb

@funa

def func():

print("it's func")

结果4

it's funa

it's funb

none

分析4

上面将func()作为参数传给funa,那么funa(func())怎么传给funb()呢?打印desb,发现并没有参数传递。

是否可以理解为当‘装饰器' 修饰 ‘装饰器'时,仅是调用函数。

以上所述是小编给大家介绍的python中@的用法详解整合,希望对大家有所帮助

希望与广大网友互动??

点此进行留言吧!

详解python中的用法_详解python中@的用法相关推荐

  1. python中rstrip用法_浅谈Python3中strip()、lstrip()、rstrip()用法详解

    简单来说,三种方法是为了删除字符串中不同位置的指定字符.其中,strip()用于去除字符串的首尾字符,同理,lstrip()用于去除左边的字符,rstrip()用于去除右边的字符 Python中有三个 ...

  2. [转载] python中for语句用法_详解Python中for循环的使用_python

    参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...

  3. python namedtuple用法_详解Python中namedtuple的使用

    namedtuple是Python中存储数据类型,比较常见的数据类型还有有list和tuple数据类型.相比于list,tuple中的元素不可修改,在映射中可以当键使用. namedtuple: na ...

  4. python中for语句用法_详解Python中for循环的使用_python

    这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...

  5. python中的浮点数用法_如何利用Python在运算后得到浮点数值的方法详解

    在python中进行两个整数相除的时候,在默认情况下都是只能够得到整数的值,而在需要进行对除所得的结果进行精确地求值时,想在运算后即得到浮点值,那么如何进行处理呢? 1.修改被除数的值为带小数点的形式 ...

  6. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

  7. python java混合编程_详解java调用python的几种用法(看这篇就够了)

    java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...

  8. python英语字典程序修改_详解如何修改python中字典的键和值

    我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...

  9. python中怎么计数_浅谈python中统计计数的几种方法和Counter详解

    1) 使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1. lists = ['a','a','b ...

  10. python中递归函数写法_详解python中递归函数

    函数执行流程 def foo1(b,b1=3): print("foo1 called",b,b1) def foo2(c): foo3(c) print("foo2 c ...

最新文章

  1. python android自动化元素定位_linux下Appium+Python移动应用自动化测试实战---3.手把手教你定位元素编写测试用例...
  2. 《Migrating to Cloud-Native Application Architectures》学习笔记之Chapter 2. Changes Needed
  3. 【渝粤题库】广东开放大学 人力资源管理(本科) 形成性考核
  4. 【干货】华为企业数字化转型之道.pdf(附下载链接)
  5. 使用generator自动生成mybatis model、mapper.xml、mapper等(转)
  6. 网络攻击导致企业遭受损200万美元
  7. 局域网从另一台电脑copy文件(Linux系统下)
  8. java JDK 8 官网下载网址/清华镜像/华为镜像
  9. 新版WIFI分销微信小程序源码+亲测可用
  10. CHK文件恢复工具v2.0绿色版
  11. StikyNotes便签软件
  12. 什么蓝牙耳机性价比高?四款高性价比蓝牙耳机推荐
  13. python用什么软件编程-初学 Python 需要安装哪些软件?
  14. 西门子S7-1200控制V90伺服
  15. ubuntu22.04 在笔记本上切换核显驱动出现的字体模糊或屏幕模糊现象的解决方法
  16. Android手机主流屏幕分辨率有哪些?
  17. excel表格计算机二级销售,计算机二级excel真题:制作产品销售情况表
  18. 如何禁止.exe文件运行?
  19. 什么是SOA,谈谈你的SOA的理解
  20. excel成本统计:如何进行区域筛选,多条件求和?

热门文章

  1. 7、产品生命周期的四个阶段 - 产品管理系列文章
  2. macOS系统安装gnuplot(解决Terminal type set to unknown)
  3. 手把手教你如何用手机做兼职赚钱
  4. LeetCode24--种花问题和柠檬水找零
  5. 34、CSS进阶——行高的取值以及常见的长度单位
  6. canny检测出的多个边缘合成一个_Canny边缘检测算法
  7. 360°旋转全景照片
  8. 女生健康美丽的养生秘诀(转自CSDN健康养生 by esebebe)
  9. 攻防世界--misc--新手区
  10. 中国艺术《世外山》孙溟㠭篆刻