私は最近、Pythonのデコレータの対象をleant、そして下の2つの異なるプログラムのための奇妙な何かを見つけた:Pythonの関数デコレータパズル
例1:
def deco(func):
def inner():
print("Running inner")
return func
@deco
def target():
print("Running target")
def main():
print("Running main()")
target()
if __name__ == "__main__":
main()
例2:
def deco(func):
print("Running inner")
return func
@deco
def target():
print("Running target")
def main():
print("Running main()")
target()
if __name__ == "__main__":
main()
Example1とExample2を実行すると、2つの異なる結果が得られます。
Running main()
Running target
例1で
、および例2で
Running inner
Running main()
Running target
。
例1では「Running inner」が失われているようです。どうして?
例1と例2の出力を混同しませんでしたか? –
私の間違いをお詫び申し上げます。 – CHENLU