hitmanx 最近的时间轴更新
hitmanx

hitmanx

V2EX 第 124689 号会员,加入于 2015-06-29 10:58:47 +08:00
根据 hitmanx 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
hitmanx 最近回复了
@xuegy 你可能没明白这个意思。这个不需要你自己定义 DSL ,还是用 python 的 syntax 。

所以只要你的表达式本来就是 python 的 syntax ,直接一行不改应该就能用 python ast 把它 parse 成 AST 。然后只是遍历的时候把它替换成对应的 dict form 而已。

当然,所以依赖于 exec(string)的方法都会有 security 的问题,需要你的输入是 sanitized
这是我让 chatgpt4 根据这个 idea 写的代码:
```
import ast
import json

data = json.load(xxx) # some sample data source


class TransformVarToDict(ast.NodeTransformer):
def visit_Name(self, node):
# Replace variable reference with dictionary access
if isinstance(node.ctx, (ast.Load, ast.Store)):
return ast.Subscript(
value=ast.Name(id='data', ctx=ast.Load()),
slice=ast.Index(value=ast.Str(s=node.id)),
ctx=node.ctx
)
return node


def process_formula(formula_str):
# Parse the formula to an AST
parsed = ast.parse(formula_str)

# Transform the AST
transformed = TransformVarToDict().visit(parsed)
ast.fix_missing_locations(transformed) # Fix line numbers

# Compile and execute the modified AST
code = compile(transformed, '<string>', 'exec')
exec(code, globals())


# Sample formulas
formulas = [
"A = B + C",
"D = E - F",
"G = H * I",
"J = K / L"
]


for formula in formulas:
process_formula(formula)


print(data)
```
>> PL = PA * C3 * FR * k/(k-1.0) * N * C4 * (np.power(P0 / float(PA), (k-1.0) / (k*N)) - 1.0) / (EA * EM)

@xuegy 可能可以把表达式通过 Python AST( https://docs.python.org/3/library/ast.html)转成抽象语法树(AST),然后在 iterate 这个 AST 的时候把 node 替换成对应的 dict value
想到一个更 hack 的方法,把计算放到一个 function 里,定义一个类似 C/C++里面"preprocess"的 decorator 加在函数上。

在这个 decorator 的实现:通过 inspect.getsource(func)去拿到 source 。然后每一行里把 dict 里的存在的 token 替换成 dict[token],最后调用 exec()去执行替换完的字符串。

相当于你自己实现了一个 preprocessor
26 天前
回复了 ricwangcom 创建的主题 问与答 36 了,还要不要折腾深圳的房产?
我和你是同龄人。如果家里可以给你托底的话还行,要不然我觉得还是有点风险的。毕竟全家只有你一个人工作,存款也不多……而咱们这个年龄的程序员本来就业就存在风险。

我可能也会考虑租房,毕竟租售比低,租房还是赚的。你又有一套房,两个小孩上学的学区也已经解决了。

把自己的房子租出去,再同小区租个大点的。等未来经济预期回暖了,就业市场向好时,你钱也攒的多了再上车不迟。

房地产哪怕是一线城市,我感觉未来再大涨或者提高门槛可能性不大了
可以趁着空学下 C++,有 java 基础这个也不是特别难,至少要达到面试能覆盖到的知识点不是特别难的。如果你继续搞这个行业,有这个基础在,未来路也宽一些。

我自己当初就是自学的 C++,当时只有 C 的基础。后来也是进了全职 c++的岗位,这都 10 多年前的事了。
感觉如果早点让你同学入局当 CTO ,把整个技术栈弄扎实了,还是有机会的。可惜已经太晚了。

LZ 感觉还是亲和力比较高的管理人员,愿意和下面打成一片,可能也是技术人出身的缘故,比较温和。而龚总作为投资人希望管理更加制度化,这个无形间就把管理层和员工对立起来了。加上管理方式比较毛糙、苛刻,没有高薪做基础很难留得住人。
写得挺好的,恭喜 op 找到了自己喜欢的地方生活。人都应该享有自由迁徙的权利。
35 天前
回复了 lurui45 创建的主题 问与答 手机到底是怎么窃听我们的
除了技术手段,还有成本效率原因。每个人每天说那么多话,有多少代表了购买意向?真正有购买意向的你会去搜索引擎、购物平台、视频平台、社交软件等等上面搜索,搜集这些信息,包括你的输入法,这显然是更有效率的方法。
程序员做一种产品更容易成功,就是做开发的工具。原因无他,只有当自己是客户的时候才更容易从客户的角度思考问题。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1912 人在线   最高记录 6067   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 04:37 · PVG 12:37 · LAX 21:37 · JFK 00:37
Developed with CodeLauncher
♥ Do have faith in what you're doing.