Hi all,

Just a curious idea I had. The subject says it all. "import" is currently a
statement, which means it cannot be used inside anything else. Currently,
the only way to import a module inside an expression is to use the
__import__ function, which is both cumbersome and takes up more space
(which is disadvantageous in things like code golf).

I propose making "import" an expression, thus allowing the syntactic sugar
of "import module" -> "__import__('module')" to be graduated to the
expression level. Because of operator precedence, I suspect that in most
cases one would need to surround the expression with parentheses.
An additional effect that is not seen with using __import__ is that the
module's name is bound to the current scope the way it is with a normal
import statement.

Examples of where this could be used:

Importing on the fly to generate one value:

    secret = (import random).randint(1, 100)

Quick use of itertools in generator expressions:

    (i * i for i in (import itertools).accumulate(generate_numbers()))

Re-using a function from a module after importing it in an expression:

    b = a * (import math).tan(math.radians(45)) #math.radians is valid
because (import math) binds "math" to the current scope

What are your thoughts?

Sharing,
Ken Hilton;
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to