向大家请教一个问题哈,我在第 11 行设置了断点,为什么程序还是运行了 11 行之后的代码呢?
1
xpresslink 2019-01-19 22:01:25 +08:00
因为装饰器是在编译字节码的阶段就执行生成了,说白了装饰器只是语法糖。
|
2
megachweng 2019-01-19 23:54:32 +08:00 via iPhone
function decorators are executed as soon as the module is imported, but the decorated functions only run when they are explicitly invoked
|
3
lance6716 2019-01-20 00:18:40 +08:00 via Android
Python 这种轻松的语言竟然还有调试器…断点打在这里不能理解是想在什么时候停止,应该打在 12 行吧
|
4
GeruzoniAnsasu 2019-01-20 00:55:01 +08:00
@xpresslink 是语法糖,但装饰器相当于一个赋值语句,在执行流中的位置还是比较明确的
@register 相当于 f1 = register(f1),执行到这行时,在装饰器函数内部下断应该是可以断下来的 在 12 行下断只有在执行 f1()时才会中断 |
5
Litecoins OP @xpresslink 明白了,谢谢!
|
6
Litecoins OP @megachweng 明白了,谢谢!
|
8
Litecoins OP @GeruzoniAnsasu 明白了,感谢!
|