断点调试装饰器遇到的疑问疑问🤔️

2019 年 1 月 19 日
 Litecoins

向大家请教一个问题哈,我在第 11 行设置了断点,为什么程序还是运行了 11 行之后的代码呢?

2353 次点击
所在节点    Python
8 条回复
xpresslink
2019 年 1 月 19 日
因为装饰器是在编译字节码的阶段就执行生成了,说白了装饰器只是语法糖。
megachweng
2019 年 1 月 19 日
function decorators are executed as soon as the module is imported, but the decorated functions only run when they are explicitly invoked
lance6716
2019 年 1 月 20 日
Python 这种轻松的语言竟然还有调试器…断点打在这里不能理解是想在什么时候停止,应该打在 12 行吧
GeruzoniAnsasu
2019 年 1 月 20 日
@xpresslink 是语法糖,但装饰器相当于一个赋值语句,在执行流中的位置还是比较明确的

@register 相当于 f1 = register(f1),执行到这行时,在装饰器函数内部下断应该是可以断下来的

在 12 行下断只有在执行 f1()时才会中断
Litecoins
2019 年 1 月 20 日
@xpresslink 明白了,谢谢!
Litecoins
2019 年 1 月 20 日
@megachweng 明白了,谢谢!
Litecoins
2019 年 1 月 20 日
@lance6716 明白了,感谢!
Litecoins
2019 年 1 月 20 日
@GeruzoniAnsasu 明白了,感谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/528683

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX