装饰器之基本方法
来源:互联网 发布:sql server安装包下载 编辑:程序博客网 时间:2024/05/20 17:39
方法你了解多少,不够清晰的话后面装饰器可能会糊涂
方法基本模板:
def function_Name(parameters...): todo return obj组件讲解:
def:这个是python方法定义的关键字,实在说不了啥
function_Name:自定义方法名,和对象一样随便定义,但是函数名不能随便当做变量名使用,真的会覆盖的
def test(): print('test')test() #testprint(test) #<function test at 0x0090D618>test = 3print(test) #3parameters:参数传入,没有个数的限制,看情况自定义,变参函数的话后续有一个篇幅进行详细讨论
默认参数,不用特殊设定,也可以为参数设置默认值
但是设置默认值的形参声明需要靠后,先声明无默认值形参,交错声明会出错,也不是个好习惯
方法调用需要传参,设置默认值的参数可以不用传参,会直接使用默认值进行操作,有传入值直接使用传入值操作
def test(a,b=1,c=2): print('a={}\tb={}\tc={}'.format(a,b,c))test(0) # a=0b=1c=2 test(0,5) # a=0b=5c=2test(0,5,9) # a=0b=5c=9todo:代码逻辑,利用括号中形参进行操作,也可以不使用,但是不能使用未声明的变量
def test(a,b=1,c=2): print('就是不用参数')return obj:返回指定对象obj,不写或直接写return,默认返回None
def test(): return print(test()) #Nonedef test(): passprint(test()) #Nonedef test(): return 3print(test()) #3方法也是对象,也可以返回一个方法
def test(): print('test') def inner(): print('inner') return innera = test() #testa() #inner
它后面定义的方法体可以看做是重写了function类中的__call__方法,因此括号进行调用的时候会执行此方法
def test(): passprint(test) #<function test at 0x02C0D618>
方法对象的用法:
调用:直接用方法名称,可以进行赋值操作,赋值给其他变量,其他变量也会引用这个对象,为方法名赋值的话就会替换覆盖方法体,就是个简单对象
执行:加上括号的话,就会执行定义的代码块,成为一个比较特殊的对象(如果你的定义的对象的类没有实现__call__的话)
所以是对象的调用还是函数的执行,有时候容易混淆,牢记区别可以避免很多坑
阅读全文
0 0
- 装饰器之基本方法
- 装饰器之变体装饰
- Python 装饰器装饰类中的方法
- Python 装饰器装饰类中的方法
- Python 装饰器装饰类中的方法
- 装饰器之装饰器类
- python之装饰器
- Python之装饰器
- Python3之装饰器
- 装饰器之认祖归宗
- Python - 函数/方法装饰器
- Python函数/方法装饰器
- [Python/魔法方法/装饰器]
- PHP之装饰器模式
- 设计模式之装饰器
- Python 之 decorator装饰器
- Python 之 decorator 装饰器
- python学习之装饰器
- springMVC下前端ajax报404错误
- FFmpeg
- MySQL的聚集索引和非聚集索引
- linux环境mysql安装
- C++语言编程题1
- 装饰器之基本方法
- 十大Intellij IDEA快捷键
- 第三篇:显示cifar-10中的图片
- pyspider递归调用
- Smallest Minimum Cut(HDU 6214 dinic模板)
- bean之后创建dao
- CCF—日期计算 20150902
- 实验一线性表的基本操作实现及其应用
- Glide 一个专注于平滑滚动的图片加载和缓存库__辉