python3装饰器参数_python3 使用装饰器,及函数作为参数

#装饰

import types

def shucai(n):

print('蔬菜价格7')

if type(n)==types.FunctionType:

return n()+7

return n+7

def feiniu(n):

print('精品肥牛12')

if type(n)==types.FunctionType:

return n()+12

return n+12

@feiniu

@shucai

def guodi():

print('锅底38')

return 38

print(guodi)

#类 import 类名可以调用其它模块

class leu():

def __init__(self):

name=None

def show(self,s):

print(self.name,s)

u=leu()

u.name='张三'

u.show('hhah')

print('内嵌函数')

def outer():

x=1

def inner():

print('in inner')

print(x)

print(locals())

inner()

b=outer()

#函数是python中的一级对象

#函数作为参数

def add(x,y):

return x+y

def sub(x,y):

return x-y

def apply(func,x,y):

return func(x,y)

print(apply(sub,1,5))#和其他变量一样,函数名就是变量标签

print('-------------')

def outerl():

def inner():

print('inside inner')

return inner

fl=outerl()

fl()

print('------闭包---------')

def outer(x):

def inner():

print(x)

return inner

print1=outer(1)

print2=outer(2)

print1()

print2()

print('---装饰器---------')

def outer2(some_func):

def inner():

print('before func')

ret =some_func()

return ret +1

return inner

def foo2():

return 1

decorated=outer2(foo2)

print(decorated())

#装饰器其实就是一个以函数作为参数并返回一个替换函数可执行函数

class Coordinate:

def __init__(self,x,y):#初始化参数

self.x=x

self.y=y

def __repr__(self):#重写方法

return 'coord'+str(self.__dict__)

#a=Coordinate(3,4)

#print(a)

def add2(a,b):

return Coordinate(a.x+b.x,a.y+b.y)

def sub2(a,b):

return Coordinate(a.x-b.x,a.y-b.y)

one=Coordinate(100,200)

two=Coordinate(300,200)

print(add2(one,two))

print(sub(one,two))

#函数装饰器@符号的应用

#@在定义函数的时候使用

#无参数装饰器

def foo(func1):

print('decorator foo')

return func1

@foo

def bar():

print('bar')

bar()

#可以把函数对象作为参数

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值