[Python-ideas] Make import an expression
Ken Hilton
kenlhilton at gmail.com
Sat Jul 14 04:24:32 EDT 2018
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;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180714/310d8e33/attachment.html>
More information about the Python-ideas
mailing list