gpt4 book ai didi

python - 基于单个输入分配多个值的大多数 pythonic 方法

转载 作者:搜寻专家 更新时间:2023-10-30 20:53:00 25 4
gpt4 key购买 nike

我需要根据单个用户输入分配多个变量。我的代码已经有机地演变为以下结构,我想升级到更 pythonic 的东西。

def build_simulation(type='running'):
var1 = {'running': 1, 'starting': 2, 'stopping': 3}
var2 = {'running': math.pi, 'starting': 7/9, 'stopping': 1e-6}
varN = {'running': 'this', 'starting': 'is an', 'stopping': 'example'}

return other_function(var1[type])+var2[type], text+varN[type]

我的模拟最终可能有几种 类型,其他用户可能希望稍后添加他们自己的类型(或变量)。任何人都可以建议一种高度 pythonic 的方式来为后代设置它吗?

到目前为止,我一直在考虑构建一个巨大的矩阵(numpy?pandas?),或者因为我最近发现了 OOP 的乐趣,可能会用类做一些聪明的事情。

编辑:要求对该项目进行说明。我正在为迭代 fortran 代码生成输入组,其中我的 main() 将具有以下形式:

build sim1 from scratch, type='startup'
run sim1
build sim2 from sim1 results, type='running'
run sim2
build sim3 from sim2 results, type='shutdown'
run sim3
build sim4 from sim3 results, type='startup'
run sim4
build sim5 from sim4 results, type='Accident Scenario 1'

因此,我们的目标是将所有“类型”信息放在一个地方,这样如果其他用户想要添加更多信息,它们都在代码中的一个地方并且很容易添加。我还想使用一种通用方法,以便在以后模拟变得更加复杂时轻松添加其他功能。

最佳答案

这个怎么样?您将为每个场景创建一个单独的函数(将相关数据保存在一起)。代价是使您的场景参数成为全局参数(此处显示),或者可能将它们放入字典或使它们成为简单对象的属性:

def _build_sim_running():
global var1, var2, ... varN
var1 = 1
var2 = math.pi
# ...
varN = 'this'

def _build_sim_starting():
global var1, var2, ... varN
var1 = 2
var2 = 7.0/9
# ...
varN = 'is an'

def _build_sim_stopping():
global var1, var2, ... varN
var1 = 3
var2 = 1e-6
# ...
varN = 'example'

Simulation_builder = {
'startup': _build_sim_starting,
'shutdown': _build_sim_shutdown,
'running': _build_sim_running,
}

def build_simulation(type='running'):
fn = Simulation_builder[type]
fn()

关于python - 基于单个输入分配多个值的大多数 pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35188240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com