学装饰器部分听不懂怎么办
在课堂上学习了装饰器结果完全听不懂 动手 本帖最后由 笨鸟学飞 于 2020-11-9 16:38 编辑'''希望我的这个学习笔记可以帮助你'''
def test(func):
func() #3..调用fun()------10..返回后继续执行
print "call test"#11..打印'call test'
def test1(f):
f() #6..调用fun1()
print "call test1"#7..打印'call test1'------8..随后返回上一层调用,即5..
def main():
@test #2..调用test(fun).=====这个修饰符的作用我是这么理解的,调用a()函数,紧后的函数对象作为参数传入执行
def fun():
print "call fun" #4..打印‘call fun’
@test1 #5..调用test1(fun1)------9..返回后,返回上一层调用,即3..
def fun1():
print "call fun1"#6..打印‘call fun1’
main() #1..调用main()函数。 {:10_287:}
python的装饰器不就是把方法作为参数么,很好理解啊
#coding=utf-8
# -*- coding=utf-8 -*-
from functools import wraps
def my_decorator(func):
@wraps(func) #消除装饰器影响,调用被装饰函数example时,方法对象类型不再是wapper(),变成example(),和不被装饰时的类型一样
def wrapper(*args, **kwargs): #调用时把传入参数组成元组arg,和kwargs
'''decorator''' #使用arg获取第一个参数arg获取第2个参数...,kwargs使用关键字XX获取参数
print('Calling decorated function...')
return func(*args, **kwargs) #使用将元组args和字典分解成各个参数传入方法func()
return wrapper
@my_decorator
def example():
"""Docstring"""
print('Called example function')
print(example.__name__, example.__doc__)
页:
[1]