On Sat, Mar 2, 2013 at 3:55 AM, 김용빈 <kyb...@gmail.com> wrote: > why we bother with '{variable}'.format(variable=variable) ? > can we just '{variable}.format()' ? > > if variable is exist, then assign it. > if variable is not exist, then raise error > > I am not language expert. so sorry if this is not a good idea, or already > discussed.
You're asking for a facility whereby variables magically get pulled from the caller's scope. Let me put it to you another way: def func1(): return foo + " world" def func2(): foo = "Hello" print("func1 returns: "+func1()) func2() Will this work? If not, why not? There are ways around this; you can, for instance, pass locals() to format(): '{variable}'.format(**locals()) But this is massive overkill and can unexpectedly expose a whole lot more than you wanted (an issue if you accept a format string from an untrusted source). Generally, it's best to be explicit. You can avoid repeating the name so much by using positional parameters instead: '{0}'.format(variable) Of course, this has its own considerations. But at least it isn't magical. :) ChrisA -- http://mail.python.org/mailman/listinfo/python-list