【发布时间】:2018-05-21 21:55:43
【问题描述】:
我有一个带有模块pymetrics.py的包:
from .utils import minSample
MIN_SIZE = 10
@minSample(MIN_SIZE)
def inventory(df):
'''for quantisation'''
return len(df)
(以及许多其他具有相同装饰器的指标)
...连同utils.py:
def minSample(sample=None):
def decorator(method):
@wraps(method)
def f(*args, **kwargs):
if len(args[0]) < sample:
return None
return method(*args, **kwargs)
return f
return decorator
现在,在我的生产代码(包外)中,我想更改最小样本大小 (MIN_SIZE),以便它影响所有修饰函数:在特定情况下,我可以使用 MIN_SIZE=0;
但是,我不知道该怎么做;
import pandas as pd
from package import pymetrics as mtr
mtr.MIN_SIZE = 0
test = pd.DataFrame({'price': [10, 20, 10], 'name': ['foo', 'bar', 'baz']})
mtr.inventory(test)
>>> None
【问题讨论】:
标签: python python-3.x decorator