'import *' only allowed at module level
When Python compiles code it needs a determined number of local variables, The number of variables that import * can return can change after code is compiled.
foo = 55 def func(): from some_module import * print(foo)
Is foo a local name imported from some_module? Or is it the global?
For that matter - what about the name print? That, too, could have been overwitten by the import. This kind of code is very hard to deal with for humans, and for Python interpreter, it required much slower run-time lookups for all names. Use from some_module import x, y, so that Python and your subsequent self can be confident of what's getting imported.