|  |      1www5070504      2019-07-04 15:00:40 +08:00 a = __import__("模块名") a.xx 这种行不 或者用 eval eval 不太安全 | 
|  |      2beneo OP @www5070504 都是我们内部使用,我觉得 eval 还好,我在找有没有更好的 | 
|  |      3Maboroshii      2019-07-04 15:01:53 +08:00 via Android 先写到文件,再执行文件 | 
|  |      4pmispig      2019-07-04 15:46:07 +08:00 先写到文件,再动态 import ? | 
|  |      5no1xsyzy      2019-07-04 15:50:50 +08:00 AST 现场修改代码 PyMacro 似乎就是这么干的 | 
|      6oatw      2019-07-04 17:17:16 +08:00 元编程? Ruby 是可以实现的,Python 不清楚。 不过 Python 不也是动态语言吗?有编译时?!还是只有运行时? | 
|      7zealic      2019-07-04 17:19:29 +08:00 Py in Py | 
|  |      8xiaket      2019-07-04 17:24:24 +08:00 动态代码加载如果还觉得不够的话, 可能只能和楼上说的一样, 用元编程定义一个 DSL 了. 如果不想搞那么复杂, 搞一个中间文件格式出来, 所有客户的输入都统一转成这个格式, 然后再统一处理也行 | 
|  |      9myyou      2019-07-04 18:10:29 +08:00 exec | 
|  |      10misaka19000      2019-07-04 18:23:58 +08:00 每当这种场景我就推荐用 golang 写基础逻辑,然后用 lua 写脚本来处理新的逻辑 hhh | 
|  |      11BBCCBB      2019-07-04 18:36:08 +08:00 动态 import, 你客户的处理代码加唯一标识,import 的时候按照你这个唯一标识的规则 import 进去执行。 | 
|  |      12BBCCBB      2019-07-04 18:37:02 +08:00 lua 这种可以为每个函数单独设置 environment 的安全些。 | 
|      13anonymous256      2019-07-04 19:30:13 +08:00 via Android 采用框架-组件(插件)的架构,你的核心代码是框架,每个客户的代码是组件。不必重新发布,只更新组件就可以了。 | 
|  |      14spotfg      2019-07-05 00:26:02 +08:00 猴子补丁 | 
|  |      15Takamine      2019-07-05 10:05:32 +08:00 干脆自己写一个编译器 2333333333333333333333333333333333333333。 | 
|  |      17chenstack      2019-07-05 11:40:29 +08:00  1 刚好想知道 Python3.7 的 dataclass 是怎么实现初始化后统一调用__post_init__的,结果看源码发现是拼接 def __init__字符串,然后用 exec 动态生成方法的,和楼主的需求有点联系。 https://github.com/python/cpython/blob/master/Lib/dataclasses.py#L370 | 
|  |      19goofool      2019-07-05 19:39:02 +08:00 抽象方法? |