为了对模型中的一些参数进行敏感性分析,我想覆盖并重新定义一个变量。此变量可由用户手动选择。我无法使覆盖工作。你知道吗
目前,我主要关注如何将locals()或globals()设置为正确的值,如下所示。这不管用。你知道吗
我的代码有两个重要部分:首先是Main函数,完成创建模型的所有工作。它有许多变量,其中一个变量是:波高
def Main(loopname, loopvalue = 0):
Wave_height = 2 #m
# And_many_other_characteristics
# redefine one single variable name
vars()[loopname] = loopvalue
globals()[loopname] = loopvalue
locals()[loopname] = loopvalue
print (Wave_height)
return_info = 1 ## rows of code i dont want to bother you with ##
return(return_info)
if __name__ == "__main__":
Main("testname", 0)
对于敏感性分析,我希望所有变量都是常量,除了一个变量。假设我想改变波高。我想执行以下代码:
import Main
import numpy as np
loopname = "Wave_height"
loopvalue = [1,2,3]
max_z_displacement = np.zeros(len(loopvalue))
for i in range (len(loopvalue)):
return_info = Main.Main(loopname, loopvalue[i])
max_z_displacement[i] = return_info[2]
目前,照片如下:
2
我希望结果是:
1
我希望避免在def行中使用50个不同的变量,因为这样不便于使用。你知道吗
若要使调用的函数看起来自然,请将参数打包到其他无特征的对象中:
相关问题 更多 >
编程相关推荐