On May 24, 2005, at 4:43 PM, Andi Vajda wrote:

I think there are subtle differences. I would have to check, but I
believe one difference is that with import doing reload() would work as
expected, but not so with from. In other words, doing:

from datetime import datetime
# then sometime later call
reload(datetime)

would be slightly different than:

import datetime.datetime as datetime
# then sometime later call
reload(datetime)

We haven't been rigorous with enforcing the convention though. And I
don't know if we are actually using reload(), or if we are even planning
on using it, or if it would actually be a bad idea to even try use it.

I don't ever use reload, I've never been able to make it work reliably.
Is anybody using reload ?
We hope to use reload in the "Test/Reload Parcels" menu to provide more interactive Chandler development sessions sometime soon. Changing a line of Python code currently requires us to quit and relaunch Chandler. Many bugs could be fixed without the quit/launch cycle simply by editing the file and reloading the new code into the current running Chandler. Getting this to work will require us to change all references to modules that we'd like to be reload-able so they use "import" instead of "from".

Are there other good reasons to use "import" rather than "from"? Yes; Alex Martelli recommends using "import"! See the paragraph in the middle of page 120 of the Python in a Nutshell book for specifics. My understanding, based on reading his sections on "from" and "import" is this: Using "import" brings the module into the system, where it can be shared by multiple client modules, so the loading is only done once (until you reload). Using "from" brings selected attributes into your module's global data space, so you have to load your own copy of those attributes. This may indeed give you faster lookup, as Andi said previously, but at the cost of always loading your own copy. So there's a tradeoff, hence we don't have a hard and fast rule about not using "from". Just don't ever use "from module import *" form in Chandler source code because that can cause all kinds of problems.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev

Reply via email to