- Отредактировано с учетом первоначальной обратной связи
Чтобы провести анализ чувствительности по некоторым параметрам в моей модели, я хочу перезаписать и переопределить одну переменную.Эта переменная может быть выбрана пользователем вручную.Я не могу заставить перезапись работать.
Пока я сосредоточился в основном на том, чтобы вернуть localals () или globals () к правильному значению, но, как показано ниже.это не сработало.
Две важные части моего кода: первая функция Main, выполняющая всю работу по созданию модели.В нем много переменных, одна из которых показана: Wave_height
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)
Для анализа чувствительности мне бы хотелось, чтобы все переменные были постоянными, за исключением одной переменной.Предположим, я хочу изменить Wave_height.Я хочу сделать что-то вроде следующего кода:
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
Я бы хотел избежать использования 50 различных переменных в def-строке, так как это не облегчит использование.