【发布时间】:2019-07-22 06:55:52
【问题描述】:
我目前正在使用无服务器解决方案(ML 引擎),并且我需要不时将流程的数据帧保存在云存储中。为此,我创建了名为 save_current_data_frame_to_track 的方法,我想将其转换为装饰器,如下所示:
import numpy as np
import pandas as pd
def save_current_data_frame_to_track(current_data_frame, filename):
current_data_frame.to_csv(filename + '.csv')
pass
def save_input_to_track(func):
def func_wrapper(*args, func):
for arg in args:
for key, value in locals():
if type(value) == 'pandas.core.frame.DataFrame':
save_current_data_frame_to_track( value, key)
return (func)
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)
这给了我以下错误:
add_1(rp)
TypeError: 'NoneType' object is not callable
为什么会出现这个错误?
【问题讨论】:
-
您遇到的错误是什么?此外,如果您的装饰器函数名称为
save_input_to_track,则应将其作为@save_input_to_track放在其他函数之上。 -
@Mudits 刚刚更新了我的问题
-
看
return func_wrapper的缩进,你的save_input_to_track()函数没有返回任何东西..
标签: python decorator python-decorators