jiwuligege01 发表于 2021-4-24 10:44:16

装饰器问题

本帖最后由 jiwuligege01 于 2021-4-24 10:46 编辑

求助各位大佬,运行myfunc1()后,即myfunc1=func2, a=myfunc1,不是应该只会执行到 func2()这一层,为什么func3那一层也会执行
def func1(a=None):
    print('我在func1里')

    def func2(func):
      print('我在func2里')

      def func3(*args, **kwargs):
            print('我在func3里')

      return func3

    return func2


# myfunc1 = func1(myfunc1)
@func1()
def myfunc1():
    pass


myfunc1()

阿奇_o 发表于 2021-4-24 12:06:50

因为你 func2 返回的是 func3 .

jiwuligege01 发表于 2021-4-24 12:15:59

func2 return的是func3,并没有带括号啊

jiwuligege01 发表于 2021-4-25 10:19:53

{:10_266:}

jiwuligege01 发表于 2021-4-25 14:26:45

我明白了。。@func1()=@func2,即myfunc1=func2(myfunc1)
页: [1]
查看完整版本: 装饰器问题