装饰器之基本方法

来源:互联网 发布: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)     #3
parameters:参数传入,没有个数的限制,看情况自定义,变参函数的话后续有一个篇幅进行详细讨论

                      默认参数,不用特殊设定,也可以为参数设置默认值

                      但是设置默认值的形参声明需要靠后,先声明无默认值形参,交错声明会出错,也不是个好习惯

                      方法调用需要传参,设置默认值的参数可以不用传参,会直接使用默认值进行操作,有传入值直接使用传入值操作 

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=9
todo:代码逻辑,利用括号中形参进行操作,也可以不使用,但是不能使用未声明的变量

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的一个对象

                         它后面定义的方法体可以看做是重写了function类中的__call__方法,因此括号进行调用的时候会执行此方法

def test():    passprint(test) #<function test at 0x02C0D618>

方法对象的用法:

调用:直接用方法名称,可以进行赋值操作,赋值给其他变量,其他变量也会引用这个对象,为方法名赋值的话就会替换覆盖方法体,就是个简单对象

执行:加上括号的话,就会执行定义的代码块,成为一个比较特殊的对象(如果你的定义的对象的类没有实现__call__的话)

所以是对象的调用还是函数的执行,有时候容易混淆,牢记区别可以避免很多坑





原创粉丝点击