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

2019-01-19 21:53:44 +08:00
 Litecoins

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

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

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

在 12 行下断只有在执行 f1()时才会中断
Litecoins
2019-01-20 09:57:25 +08:00
@xpresslink 明白了,谢谢!
Litecoins
2019-01-20 09:57:38 +08:00
@megachweng 明白了,谢谢!
Litecoins
2019-01-20 09:57:57 +08:00
@lance6716 明白了,感谢!
Litecoins
2019-01-20 09:58:15 +08:00
@GeruzoniAnsasu 明白了,感谢!

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

https://www.v2ex.com/t/528683

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

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

© 2021 V2EX