Я работаю над большим кодом анализа методом конечных элементов с множеством функций. Для передачи переменных между различными функциями я использую kwargs в Python. Я в основном выбрал это для того, чтобы вызывать функции множеством разных способов, обеспечивая большую гибкость.
Однако сейчас я столкнулся с проблемой. Из основной функции я вызываю другую функцию, используя kwargs. Эта вторая функция затем обрабатывает ввод и добавляет новые kwargs. Проблема в том, что новые kwargs, созданные в этой функции, недоступны в первой. Есть ли питонический способ сделать это? В качестве примера я создал следующий код:
# Create main function
def main(**kwargs):
# Add a key word argument
kwargs["textMain"] = "text added in main"
# Call a function with existing kwargs and a new one
functionA(textNew = "text added in new" ,**kwargs)
# Test what is in kwargs after subfunction is called
print("\nTest kwargs after subfunction is called:")
if "textMain" in kwargs:
print(kwargs["textMain"])
if "textNew" in kwargs:
print(kwargs["textNew"])
if "textA" in kwargs:
print(kwargs["textA"])
def functionA(**kwargs):
# Test kwargs before adding kwargs in subfunction
print("\nTest kwargs in subfunction before adding:")
if "textMain" in kwargs:
print(kwargs["textMain"])
if "textNew" in kwargs:
print(kwargs["textNew"])
if "textA" in kwargs:
print(kwargs["textA"])
# Add kwargs
kwargs["textA"] = "text added in sub A"
# and test kwargs again
print("\nTest kwargs in subfunction after adding:")
if "textMain" in kwargs:
print(kwargs["textMain"])
if "textNew" in kwargs:
print(kwargs["textNew"])
if "textA" in kwargs:
print(kwargs["textA"])
if __name__ == "__main__":
main()
Это дает следующий результат:
#Test kwargs in subfunction before adding:
#text added in main
#text added in new
#Test kwargs in subfunction after adding:
#text added in main
#text added in new
#text added in sub A
#Test kwargs after subfunction is called:
#text added in main
где мой предпочтительный результат был бы:
#Test kwargs in subfunction before adding:
#text added in main
#text added in new
#Test kwargs in subfunction after adding:
#text added in main
#text added in new
#text added in sub A
#Test kwargs after subfunction is called:
#text added in main
#text added in new
#text added in sub A
Было бы очень полезно, если бы кто-нибудь мог решить мою проблему. Заранее спасибо!