Python中如何为帧对象(frame object)添加类型提示?
Python中如何为帧对象(frame object)添加类型提示?
这个问题我之前给老代码加类型提示的时候也碰到过!信号处理函数里的frame对象类型确实有点难找,不过其实官方已经给我们准备好对应的类型了。
你只需要用types.FrameType来标记帧对象的类型,再结合typing.Optional(因为这个参数可能是None)就可以完美解决。具体用法如下:
首先导入需要的模块:
import signal import types from typing import Optional
然后给你的信号处理函数加上类型提示:
def my_signal_handler(signum: int, frame: Optional[types.FrameType]) -> None: # 这里写你的信号处理逻辑 if frame is not None: # 比如可以打印当前帧的信息 print(f"当前函数名: {frame.f_code.co_name}") pass # 注册信号处理器 signal.signal(signal.SIGINT, my_signal_handler)
补充说明:
types.FrameType是Python标准库中专门用来表示帧对象的类型,从Python 3.3版本开始就存在了,完全符合类型提示的规范,mypy、PyCharm这类工具都能正确识别。- 之所以用
Optional,是因为根据signal.signal的文档,第二个参数确实可能传入None,所以类型提示里要体现这一点。
这样你的类型提示就准确又规范啦!
备注:内容来源于stack exchange,提问作者Newbyte
相关产品推荐
相关产品推荐

