Dave Angel wrote: > I tried your experiment using Python 2.7 and Linux 11.04 > > > def f(a): > from math import sin, cos > return sin(a) + cos(a) > > print f(45) > > Does what you needed, and neatly. The only name added to the global > namspace is f, of type function. > > I was a bit surprised that using from math import * inside the > function worked, but it generates a warning: > olive.py:2: SyntaxWarning: import * only allowed at module level > def f(a):
I guess they want local symbols in functions to be pre-compiled. Similar to the way you can't usefully update the dict returned by locals(). Strangely, I notice that Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> def f(x): ... exec x ... exec 'print a' ... >>> f('a=4') 4 >>> works, but I really cannot explain why. Mel. -- http://mail.python.org/mailman/listinfo/python-list