Когда я запускаю следующий образец:Динамический модуль загрузки области видимости в Python
def a():
exec('import math')
b()
def b():
print math.cos(90)
a()
Я получаю следующее сообщение об ошибке: NameError: глобальное имя «математика» не определен
То, что я пытаюсь делать динамическую загрузку некоторых модулей из функции a() и использовать их в функции b()
Я хочу, чтобы она была максимально бесшовной для точки b() vi РЭБ. Это означает, что я не хочу загружать модуль с _ _ import _ _ в a() и передавать ссылку на функцию b(), на самом деле обязательно, чтобы подпись функции b() оставалась только этой : b()
есть ли способ сделать это ребятам? спасибо!
Почему вы не просто 'импорт math' в верхней части файла, который содержит' B() '? – bgporter
Хм ... Я не спрашиваю: «Почему?». Может быть, 'globals() ['math'] = __import __ (" math ")'? Выглядит уродливо :) – khachik
, потому что я не знаю заранее, что хочу использовать математический модуль. «Математика» здесь просто приведена. Я хочу загрузить любой модуль во время выполнения из функции a() – Alexandros