I don't get the processes behind "import" and "from xyz import". When I code:
from tkinter import *
then I import, I thought, the whole tkinter names into my namespace. But I can't use neither
tkinter.messagebox.showinfo("title", "someinfo")
nor
messagebox.showinfo(...)
To use that, I have to
from tkinter import messagebox
to access it. the same with
import tkinter as tk
... there is no:
tk.messagebox.showinfo...
@fatrat `from … import *` doesn’t import everything. The module’s author can decide what’s included.
But note that it’s generally considered bad practice to use `from … import *` as it dumps lots of stuff into the main namespace. It is safer to keep namespaces separate
@JHB17 @fatrat A good way to explore this is to try it out. Create a script, let's call it `test.py` and include the following variables:
`some_variable = 10`
`_another_variable = 20`
`__yet_another_one = 30`
Then try `from test import *` in the REPL/Console. You'll see that only `some_variable` is public so only that variable is imported.
But now, add the following at the top of the script:
`__all__ = ["_another_variable", "__yet_another_one"]`
and try `from test import *` in a **new** REPL/Console (not the same one as before, as the old version is already imported there)
@s_gruppetta @JHB17 great, thx again, tried it.