Python:为循环体添加语句
我有很多这样的for循环: 枚举(iter)中(i,elem)的Python:为循环体添加语句,python,Python,我有很多这样的for循环: 枚举(iter)中(i,elem)的 x=做某事1(i,元素) 做点什么2(我,元素) 我想用一堆打印语句来包装每个迭代,以便更清楚地说明发生了什么,例如: 枚举(iter)中(i,elem)的 打印(f“迭代{i}”) 打印(------------) x=做某事1(i,元素) 做点什么2(我,元素) 打印(“”) 请注意,我不打算在循环体的现有行之间插入print语句,只是为了将其环绕,也不打算在prints中使用除I以外的任何变量。 问题:有没有一种简单的方
x=做某事1(i,元素)
做点什么2(我,元素)
我想用一堆打印语句来包装每个迭代,以便更清楚地说明发生了什么,例如:
枚举(iter)中(i,elem)的
打印(f“迭代{i}”)
打印(------------)
x=做某事1(i,元素)
做点什么2(我,元素)
打印(“”)
请注意,我不打算在循环体的现有行之间插入print语句,只是为了将其环绕,也不打算在prints中使用除I
以外的任何变量。问题:有没有一种简单的方法(可能是
@decorator
-like语句)来避免复制粘贴?旁注:您可以简化(i,elem)
->i,elem
和print(“”
->print()
这些循环在它们自己的函数中吗?将它们提取到一个高阶函数中是可行的。您还可以设置日志记录,以便轻松切换。这是相当普遍的。或者只做它自己的函数(调用doiSothTung1和doiAsthTung2)或者做一个装饰器。@ OnCeRekter,不,它们在其他代码的中间。肯尼·奥斯特罗姆:我不太明白你的意思:在这种情况下,我怎么做一个装饰师?我认为装饰器只适用于def
s和class
esSide注意:你可以简化(I,elem)
->I,elem
和print(“”)
->print()
这些循环在它们自己的函数中吗?将它们提取到一个高阶函数中会起作用。您还可以设置日志记录,以便轻松切换。这是相当普遍的。或者只做它自己的函数(调用doiSothTung1和doiAsthTung2)或者做一个装饰器。@ OnCeRekter,不,它们在其他代码的中间。肯尼·奥斯特罗姆:我不太明白你的意思:在这种情况下,我怎么做一个装饰师?我认为decorator只适用于def
s和class
esIt。这似乎只适用于所有循环都具有相同的主体的情况,以便将其提取到函数(wrapper
)?在这种情况下,没有必要使用decorator我的英语不好,我试着理解你,我想你需要decorator这样做:)你可以使用doFor(iter,withInfo)
和wrapper(item,withInfo):如果withInfo:for with info其他:for withoutInfo
我想在循环体周围添加打印语句,但是尽可能少地修改代码:)以避免使用新函数。这似乎只有在所有循环都具有相同的主体时才起作用,以便可以将其提取到函数(包装器
)?在这种情况下,没有必要使用decorator我的英语不好,我试着理解你,我想你需要decorator这样做:)你可以使用doFor(iter,withInfo)
和wrapper(item,withInfo):如果withInfo:for with info其他:for withoutInfo
我想在循环体周围添加打印语句,但是尽可能少地修改代码:),这样就不用使用新函数了。
iter = ("a", "b", "c")
iter2 = ("x", "y", "z", "t")
def do_something1(i, elem):
print("do something 1")
return 15
def do_something2(i, elem):
print("do something 2")
def wrapForLoop(doFor):
def wrapper(iter):
for (i, elem) in enumerate(iter):
print(f"Iteration #{i} - Elem #{elem}")
print("----------")
x = do_something1(i, elem)
do_something2(i, elem)
print("")
return wrapper
@wrapForLoop
def doFor(iter):
pass
doFor(iter)
doFor(iter2)