'DataFrame'对象在运行时使用装饰器包装器时不可调用错误



我试图返回一个csv文件,并使用装饰器查找运行时间。(下面的代码是相同的示例代码。)但我得到一个错误,它是"'DataFrame'对象是不可调用的">

import pandas as pd
import time
import functools
def timer(func):
@functools.wraps(func)
def wrapper_timer():
start_time = time.perf_counter()  
value = func()
end_time = time.perf_counter()  
run_time = end_time - start_time  
print(f"Finished {func.__name__!r} in {run_time:.4f} secs")
return value
return wrapper_timer()

@timer
def generate_df():
file="file.csv"
df = pd.read_csv(file)
return df
df = generate_df()

if __name__ == '__main__':
print(df.head())

您应该在装饰器

中返回函数引用。
return wrapper_timer

而不是调用它

写代码的好方法,

import pandas as pd
from time import time
import functools

def timer(func):
@functools.wraps(func)
def wrapper_timer(*args, **kwargs):
start_time = time()
value = func(*args, **kwargs)
run_time = time() - start_time  
print(f"Finished {func.__name__!r} in {run_time:.4f} secs")
return value
return wrapper_timer

@timer
def generate_df(file):
df = pd.read_csv(file)
return df

if __name__ == '__main__':
filepath = "/home/vishnudev/Downloads/CF-Event-equities-21-Feb-2021.csv"
df = generate_df(filepath)
print(df.head())

最新更新