'DataFrame' 使用 Decorator 包装器 运行 次时出现对象不可调用错误
'DataFrame' object is not callable error when using Decorator wrapper for run time
我正在尝试 return 一个 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())
我正在尝试 return 一个 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())