python带括号的方法和不带括号的方法_python装饰器带括号和不带括号的语法和用法...

装饰器的写法补充:

通常装饰器的写法是@func(),而有的时候为了减少出错率,可能会写成@func,没有()括号,这时我们可以这样定义,来减少括号。下面通过两个例子还看。

一般装饰器的写法:

def log(func=None):

def inner(*args, **kwargs):

print('do something before')

res = func(*args, **kwargs)

print('do something after')

return rees

return inner

#使用装饰器

@log()

def my_func():

print('i am my_func')

#运行这个函数

my_func()

运行结果:

do something before

i am my_func

do something after

可以不带括号的装饰器写法

需要增加判断在函数内,用于判断使用装饰器的函数是否可以调用,以达到括号的自由写法

判断的装饰器写法

def log(func=None):

#需要再次嵌套一层装饰器,才可以供下面运行时使用

def wrapper(fun)

def inner(*args, **kwargs):

print('do something before')

res = fun(*args, **kwargs)

print('do something after')

return rees

return inner

#判断func(参数):

if func is None:

return wrapper

#如果func是可以调用的函数

elif callable(func):

return wrapper(func)

#使用装饰器的时候,两种写法都可以运行

第一种不带括号:

@log

def my_func():

print('i am my_func')

第二种带括号的:

@log()

def my_func():

print('i am my_func')

#运行这个函数

my_func()

两种方式的一样,运行结果:

1 do something before

2 i am my_func

3 do something after

不带括号的理解:

@log =>等同于 my_func = log(my_func)

带括号的理解:

@log() =>等同于 my_func = log()(my_func)

结论: 内嵌之后,可以增加判断条件,增加了装饰器的灵活性。

Python装饰器总结,带你几步跨越此坑!

欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

[python 基础]python装饰器(二)带参数的装饰器以及inspect.getcallargs分析

带参数的装饰器理解无非记住两点: 1.本质不过在基本的装饰器外面再封装一层带参数的函数 2.在使用装饰器语法糖的时候与普通装饰器不同,必须要加()调用,且()内的内容可以省略(当省略时,admin默认 ...

转发对python装饰器的理解

[Python] 对 Python 装饰器的理解的一些心得分享出来给大家参考   原文  http://blog.csdn.net/sxw3718401/article/details/3951958 ...

Python装饰器探险

关于python装饰器的理解和用法,推荐廖雪峰老师和这一篇博客以及知乎 以下代码均已手动敲过,看完本篇内容,包你装饰器小成! 装饰器实际上就是为了给某程序增添功能,但该程序已经上线或已经被使用,那么就 ...

Python 装饰器入门(上)

翻译前想说的话: 这是一篇介绍python装饰器的文章,对比之前看到的类似介绍装饰器的文章,个人认为无人可出其右,文章由浅到深,由函数介绍到装饰器的高级应用,每个介绍必有例子说明.文章太长,看完原文后 ...

Python装饰器的通俗理解

转载:http://blog.csdn.net/u013471155 在学习Python的过程中,我相信有很多人和我一样,对Python的装饰器一直觉得很困惑,我也是困惑了好久,并通过思考和查阅才能略 ...

(一)Python装饰器的通俗理解

在学习Python的过程中,我相信有很多人和我一样,对Python的装饰器一直觉得很困惑,我也是困惑了好久,并通过思考和查阅才能略有领悟,我希望以下的内容会对你有帮助,我也努力通过通俗的方式使得对Py ...

Python 装饰器初探

Python 装饰器初探 在谈及Python的时候,装饰器一直就是道绕不过去的坎.面试的时候,也经常会被问及装饰器的相关知识.总感觉自己的理解很浅显,不够深刻.是时候做出改变,对Python的装饰器做 ...

Python装饰器完全解读

1 引言 装饰器(Decorators)可能是Python中最难掌握的概念之一了,也是最具Pythonic特色的技巧,深入理解并应用装饰器,你会更加感慨——人生苦短,我用Python. 2 初步理解装 ...

Python 装饰器(Decorators) 超详细分类实例

Python装饰器分类 Python 装饰器函数: 是指装饰器本身是函数风格的实现; 函数装饰器: 是指被装饰的目标对象是函数;(目标对象); 装饰器类 : 是指装饰器本身是类风格的实现; 类 ...

随机推荐

ASP.NET MVC HtmlHelper之Html.ActionLink

前言 ActionLink用于生成超链接,方法用于指向Controller的Action. 扩展方法与参数说明 ActionLink扩展方法如下: public static MvcHtmlStrin ...

Java编程中“为了性能”尽量要做到的一些地方

最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源总结的一些在Ja ...

unity资源管理

Resources.Load(path); 每次执行都会真的去从硬盘加载资源,如果不希望这样做,那就保存第一次返回的引用,下次直接使用即可. Resources.UnloadAsset(obj); 该 ...

HDU 1405 第六周 J题

Description Tomorrow is contest day, Are you all ready?  We have been training for 45 days, and all ...

巧用system函数个性化屏幕显示

函数名:system 功  能: 发出一个DOS命令 用  法: system("DOS命令");             (system函数需加头文件

js 加载初始化日期

//初始化加载时间 $(function(){  var now = new Date();            var year = now.getFullYear();       //年   ...

eclipse部署Tomcat9

1.下载 下载地址https://tomcat.apache.org/download-90.cgi  2.解压文件  3.运行bin-->startup.bat文件,若界面如下图,则成功 4. ...

Perl的比较操作符

比较操作符 perl的比较操作符和bash完全相反.数值比较采用符号,字符串比较采用字母. 数值 字符串 意义 ----------------------------- == eq 相等 != ne ...

Java基础知识点(四)

前言:记录Java基础知识点,方便熟悉与掌握. 1.面向对象的"六原则一法则" “六原则一法则”:单一职责原则.开闭原则.依赖倒转原则.里氏替换原则.接口隔离原则.合成聚合复用原则 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值