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