Я рекомендую вам использовать обертки , подробности о том, как получить параметры обернутой функции здесь .И похоже, что ваш код должен быть:
import numpy as np
import pandas as pd
from functools import wraps
def save_current_data_frame_to_track(current_data_frame, filename):
current_data_frame.to_csv(filename + '.csv')
def save_input_to_track(func):
@wraps(func)
def func_wrapper(*args, **kwargs):
for arg in args:
if isinstance(arg, pd.core.frame.DataFrame):
save_current_data_frame_to_track(arg, 'somefile')
return func(*args)
return func_wrapper
rp = pd.DataFrame(data={'time_delta_from': [60, 90, 170],
'time_delta_to': [30, 60, 120]},
index=[1, 2, 3], dtype=np.int32)
@save_input_to_track
def add_1(data):
data['time_delta_from'] = 1
return data
add_1(rp)
для имени ключа в качестве имени файла, я думаю, что простое решение - использовать kwarg, вот пример:
import numpy as np
import pandas as pd
from functools import wraps
def save_current_data_frame_to_track(current_data_frame, filename):
current_data_frame.to_csv(filename + '.csv')
def save_input_to_track(func):
@wraps(func)
def func_wrapper(*args, **kwargs):
for key, kwarg in kwargs.items():
if isinstance(kwarg, pd.core.frame.DataFrame):
save_current_data_frame_to_track(kwarg, key)
return func(*args, **kwargs)
return func_wrapper
rp = pd.DataFrame(data={'time_delta_from': [60, 90, 170],
'time_delta_to': [30, 60, 120]},
index=[1, 2, 3], dtype=np.int32)
@save_input_to_track
def add_1(data1, data2):
data1['time_delta_from'] = 1
data2['time_delta_from'] = 2
return data1, data2
add_1(data1=rp, data2=rp)