Python 计算def f(x)计算次数的简单方法?

Python 计算def f(x)计算次数的简单方法?,python,recursion,numbers,counting,evaluation-strategy,Python,Recursion,Numbers,Counting,Evaluation Strategy,我试图计算f(x)被计算的次数,而不必对我的代码进行太多的更改,这似乎不是很难,但我似乎无法理解 def f (x): f = 12*x**5-45*x**4+40*x**3+5 return f def bounding(): d=.1 x=6 n=0 while(n<50): Lb=x-d n+=1 Ub=x+d if f(Lb)>=f(x) and f(Ub)<=f(x): x=x+

我试图计算
f(x)
被计算的次数,而不必对我的代码进行太多的更改,这似乎不是很难,但我似乎无法理解

def f (x):
    f = 12*x**5-45*x**4+40*x**3+5
    return f
def bounding():
    d=.1
    x=6
    n=0

while(n<50):
    Lb=x-d
    n+=1
    Ub=x+d
    if f(Lb)>=f(x) and f(Ub)<=f(x):
        x=x+d           
    elif f(Lb)<=f(x) and f(Ub)>=f(x):
        x=x-d           
    elif f(Lb)>=f(x) and f(Ub)>=f(x):
        print("Lower bound:",Lb,"Upperbound:",Ub)
        break
    print (n)
bounding()
def(x):
f=12*x**5-45*x**4+40*x**3+5
返回f
def bounding():
d=.1
x=6
n=0
而(n=f(x)和f(Ub)=f(x)和f(Ub)>=f(x):
打印(“下限:”,磅,“上限:”,磅)
打破
打印(n)
边界()
从这里开始,与之前一样,计数由
f.count
.Tested:)


一个基于装饰器的解决方案,你可以应用到任何你想要的功能

def count(fn):
        def wrapper(*args, **kwargs):
            wrapper.called+= 1
            return fn(*args, **kwargs)
        wrapper.called= 0
        wrapper.__name__= fn.__name__
        return wrapper

@count
def test():
    print "something"

test()

print test.called #will print 1

我不确定你到底在问什么,但是你的代码中有很多冗余的东西,比如整个
bounding()
函数。当计算
def(x)
时,函数就被创建了。这在代码中只发生一次。你是说调用和执行函数
f
的次数吗?注意……这不需要对函数进行更改……只需编写一个额外的修饰符……这完全超出了你的功能范围。为什么不使用修饰符在代码中添加一个示例?@jpmc26:我不明白你的意思?我在我的样本中使用了装饰器:它叫“计数”。@count?
>>> f = F()
>>> f(1)
12
>>> f(2)
-11
>>> f.count
2
>>> f(2)
-11
>>> f.count
3
def count(fn):
        def wrapper(*args, **kwargs):
            wrapper.called+= 1
            return fn(*args, **kwargs)
        wrapper.called= 0
        wrapper.__name__= fn.__name__
        return wrapper

@count
def test():
    print "something"

test()

print test.called #will print 1