首页 > 解决方案 > 在 Python 3 中查找上下文的开始和结束

问题描述

我正在尝试查找上下文开始和结束的行号。在 Python 2.7中,我能够成功地执行以下操作:

1 from contextlib import contextmanager
2 import sys
3
4 @contextmanager
5 def print_start_end_ctx():
6     frame = sys._getframe(2)
7     start_line = frame.f_lineno
8     yield
9     end_line = frame.f_lineno
10    print("start_line={}\nend_line={}".format(start_line, end_line))
11 
12 with print_start_end_ctx():
13     100
14     (200,
15      300)

Python 2.7中的输出:

start_line=12
end_line=15

但是,从对象中提取行号在Python 3.7frame中失败:

start_line=12
end_line=14

标签: pythonpython-3.xpython-2.7abstract-syntax-treepython-3.7

解决方案


推荐阅读