
我想要截取出一段代码中的全部上下文 例如
a = 3 b = 5 a = a + b c = 20 c = c / 2 func(a) func(b) a 我想要获取有关 a 的代码行
a = 3 b = 5 a = a + b func(a) a 各位有知道什么快捷的工具吗, 如果没有只能手写的话 可以帮我预估一下大概要多久才可以写好呢
1 littlepanic72 2023 年 5 月 30 日 用正则表达式,几行就搞定了吧 |
2 mythjava OP @littlepanic72 我只是举了一个简单的例子 实际情况可能要复杂的更多 正则表达式我没有想到好的方式 方便举例说明一下嘛 |
3 TtTtTtT 2023 年 5 月 30 日 =。=好家伙,静态语义分析,至少能搞一周+ |
4 sujin190 2023 年 5 月 30 日 @TtTtTtT #3 加上闭包动态属性什么的一周都不一定能搞定吧 说不定还是直接运行一下然后通过 trace 追踪一下那些行被调用了实现起来更快呢,话说你干嘛呐?多余的代码就多余呗,耗点性能也无所谓吧 |
5 vicalloy 2023 年 5 月 30 日 最可行的方案应当是直接用 python 的 ast 库 https://docs.python.org/3/library/ast.html |
6 littlepanic72 2023 年 5 月 30 日 @mythjava 如果你搞得太复杂的话我也不知道你的需求是啥样子的,可能搞不定你要的需求.... 如果只是要有出现 a 的行的话就挺简单的~~ |
7 yxd19 2023 年 5 月 30 日 如何定义与 a 相关呢?比如 ```python a = "hello" b = a b += " world" ``` 中的第三行与 a 相关吗?如果是 ```python a = [1,2,3] b = a b.append(4) ``` 呢? |
10 sujin190 2023 年 5 月 30 日 via Android @mythjava 提取出来用途是啥? python 好多都是运行起来才知道的,静态分析还是有限,如果想有限运行,那还不如搞沙箱来的容易一些 |