Steven D'Aprano wrote:
However, having disagreed with your arguments, I will say this: I think
a "tail" argument to __import__ would be more elegant:
z = __import__('x.y.z', tail=True) # or submodule in your initial post
I think that it is unintuitive that __import__(x.y.z) returns module x
instead of z. When I say "get me the book inside the box inside the
wardrobe", I expect to get the book, not the entire wardrobe! So even
though I disagree with all your criticisms of the three-line idiom, I
think there is an elegance to your idea that the three-line idiom
doesn't have. I'm +0.5 on the idea of an extra argument that says, "no,
really, just give me the book, I don't need the wardrobe".
May I point you to the two leading underscores? The name '__import__'
clearly suggests that the function is part of Python's internals. By
definition all attributes of the form __*__ are not meant to be used
directly. Any suggestion to change the arguments of __import__() are
futile. It's not going to happen unless the feature is required by
Python's internal import system.
However I agree that something should be done here. I suggest to add a
function to the imp module that does what you are trying to archive with
tail=True.
Christian
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com