whileループを抜き出して別の関数に埋め込む例
import ast import codegen expr=""" def main(): i = 0 while(i<3): print(i) i += 1 print("done") if __name__=="__main__": main() """ p=ast.parse(expr) while_part = p.body[0].body.pop(1) p1 = ast.parse("def sub():\n pass") p1.body[0].body.append(while_part) p1.body[0].body.pop(0) p.body.insert(1,p1) print("****** original ******") print(expr) print("****** converted ******") print(codegen.to_source(p))
****** original ******
def main():
i = 0
while(i<3):
print(i)
i += 1
print("done")
if __name__=="__main__":
main()
****** converted ******
def main():
i = 0
print 'done'
def sub():
while (i < 3):
print i
i += 1
if (__name__ == '__main__'):
main()