В Python область видимости бывает трех типов: глобальная, локальная и классовая. Вы можете создать специализированные словари 'scope' для передачи в exec / eval (). Кроме того, вы можете использовать вложенные области
(определение функции внутри другой). Я обнаружил, что этого достаточно во всем моем коде.
Как уже сказал Дуглас Лидер, основной причиной использования его в других языках является переменная область видимости, а в Python этого не происходит. Кроме того, Python - самый читаемый язык, который я когда-либо использовал. Это пошло бы на грань читабельности, чтобы сделать что-то вроде трюков if-true (которых вы говорите, что хотите избежать). В этом случае, я думаю, лучше всего реорганизовать ваш код в несколько функций или использовать одну область видимости. Я думаю, что доступных областей в Python достаточно, чтобы охватить все возможности, поэтому локальная область не должна быть необходимой.
Надеюсь, это поможет.