Frank Millman wrote:

I know that when a module is imported the first time, it is
'executed'. This normally entails setting up constants, classes,
functions, etc, that you want to make available to the importer.

And every time thereafter, the module code is not executed*. So module code should only be code you want executed exactly once, on first import, and never again.

In this particular case, when it is executed, it does a whole lot
more. It reads in some parameters, establishes a socket connection,
starts a thread, and starts monitoring the socket using select.select.
It also exposes some functions that disguise the complexity of reading
from and writing to the socket.

What if you want to open another connection, because you want a second, or because you closed the first (to help the server while the client does something else) or because the connection got dropped because the server timed it out or because of network congestion or whatever?

tjr

*Python2 has a built-in reload function, but in 3.0 it is removed because it almost never did what people wanted or expected and thus lead to surprising bugs. You can delete a module from sys.modules and re-import it, but the module object and those it created will not disappear as long as there are other references to them.

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to