假设你在Python中有一些函数function
通过循环工作:例如,它可以是一个评估某个数学表达式的函数,例如: x**2
,对于数组中的所有元素,例如([1, 2, ..., 100])
(显然这是一个玩具示例)。是否有可能编写一个代码,使得每次function
经过循环并获得结果时,执行一些代码,例如, print("Loop %s has been executed" % i)
?因此,在我们的示例中,当计算x**1
时,程序将打印Loop 1 has been executed
,然后在计算x**2
时,它会打印Loop 2 has been executed
,依此类推。
请注意,困难来自于我没有对函数进行编程的事实,它是来自某个包的预先存在的函数(更具体地说,我感兴趣的函数是来自包GridSearchCV
的{{1}} })。
答案 0 :(得分:8)
最简单的方法是将函数的代码复制到您自己的函数中,调整它,然后使用它。在您的情况下,您必须子类setInterval
并覆盖GridSearchCV
方法。这种方法的问题在于它可能无法在包升级后继续存在。
在你的情况下,这没有必要。您可以在创建对象时指定详细级别:
_fit
我不完全确定详细数字本身的含义。以下是执行打印的the package used internally文档:
详细级别:如果非零,则打印进度消息。超过50,输出被发送到stdout。消息的频率随着详细程度而增加。如果超过10,则报告所有迭代。
如果您真的想知道GridSearchCV(verbose=100)
号码的作用,可以查看at the source code。我不知道。
答案 1 :(得分:0)
你可能会使用猴子修补("猴子"因为它是hacky)
假设库函数是
def function(f):
for i in range(100):
i**2
如果你想输入一个print语句,你需要将整个函数复制到你自己的文件中,然后进行微小的编辑:
def my_function(f):
for i in range(100):
i**2
print ("Loop %s" % i)
现在你覆盖了库函数:
from library import module
module.existing_function = my_function
显然,这不是一个易于维护的解决方案(如果您的目标库已升级,您可能需要再次完成此过程),因此请确保仅将其用于临时调试目的。