Some language proposals.
Jeff Epler
jepler at unpythonic.net
Tue Feb 24 11:20:53 EST 2004
On Tue, Feb 24, 2004 at 03:53:42PM +0000, Antoon Pardon wrote:
> Now my idea would be to look at the local variables in
> a function like member variables of an object so that
> you could write
>
>
> def fun_1():
>
> a = some_value
> b = a_value_too
>
> def fun_2():
>
> fun_1.a = new_value
> fun_1.b = next_value
This is not compatible with existing code. 'fun_1.a = new_value'
already has a meaning (it creates or modifies an attribute on the
function object), so it can't be used to modify the locals() of a
particular invocation of fun_1.
> def fun_1():
>
> a = some_value
> b = a_value_too
>
> def fun_2():
>
> from fun_1 import a, b
>
> a = new_value
> b = next_value
>
>
> What do people think about this?
> As far as I know the proposal doesn't break existing
> code and seems in the spirit of python.
This is not in the sprit of Python.
This already has a meaning:
from m import a
a = 3
... it almost is the same as
import m as _m
a = m.a
del _m
a = 3
... which basically just sets a to 3 (it doesn't modify the module m)
> On a side note, what would people think about the idea of
> a from ... import ... statement usable on any object? So
> that we could do:
No, that won't do. Consider the following Python program:
sys = 64738
from sys import exit
exit()
The module name in 'import' and 'from ... import' doesn't refer to
objects in the current module's namespace, but in the namespace of
modules.
Anyway, because 'from .. import' is not magic, but just assignment,
there's no reason to prefer your proposed
from A import a, b
to
a, b = A.a, A.b
.. for instance, it can't make 'a = 3' change A. It has a small
advantage that you don't need to type 'a' once on the left and once on
the right of '=', but that's about it.
Jeff
More information about the Python-list
mailing list