On Jun 21, 2:02 pm, eliben <[EMAIL PROTECTED]> wrote: > On Jun 21, 8:52 am, Peter Otten <[EMAIL PROTECTED]> wrote: > > > > > eliben wrote: > > > On Jun 20, 2:44 pm, Peter Otten <[EMAIL PROTECTED]> wrote: > > >> eliben wrote: > > >> > Additionally, I've found indentation to be a problem in such > > >> > constructs. Is there a workable way to indent the code at the level of > > >> > build_func, and not on column 0 ? > > > >> exec"if 1:" + code.rstrip() > > > >> Peter > > > > Why is the 'if' needed here ? I had .strip work for me: > > > A simple .strip() doesn't work if the code comprises multiple lines: > > > >>> def f(): > > > ... return """ > > ... x = 42 > > ... if x > 0: > > ... print x > > ... """ > > ...>>> exec "if 1:\n" + f().rstrip() > > 42 > > >>> exec f().strip() > > > Traceback (most recent call last): > > File "<stdin>", line 1, in <module> > > File "<string>", line 2 > > if x > 0: > > ^ > > IndentationError: unexpected indent > > I see. In my case I only evaluate function definitions with 'exec', so > I only need to de-indent the first line, and the others can be > indented because they're in a new scope anyway. What you suggest works > for arbitrary code and not only function definitions. It's a nice > trick with the "if 1:" :-)
Have you actually profiled your code? Or are you just basing this assumptions on guesses? -- http://mail.python.org/mailman/listinfo/python-list