Back to articles
import * in Functions: UnboundLocalError & Namespace Fix

import * in Functions: UnboundLocalError & Namespace Fix

via Dev.to PythonTildAlice

Why from module import * Crashes Inside Functions import * works fine at module level. Put it inside a function, and Python throws SyntaxError: import * only allowed at module level . The error message is clear, but the why is less obvious—and the confusion deepens when you try similar namespace tricks that do work at module level. I hit this when refactoring a CLI tool that dynamically loaded plugins. The original code used exec() with import * inside a function to inject plugin symbols. It worked—badly. The moment I tried cleaning it up with a proper import statement, Python refused. Here's what actually happens under the hood, and why Python's compiler blocks this pattern before your code even runs. Photo by Seraphfim Gallery on Pexels The Namespace Collision Python Won't Let You Create At module level, from math import * dumps every public name from math into your global namespace. Python handles this at import time—the interpreter knows exactly which names exist before any code ru

Continue reading on Dev.to Python

Opens in a new tab

Read Full Article
29 views

Related Articles