Еще один прием, который я иногда использую, когда хочу, чтобы что-то вернулось от запуска основной функции, - это вернуть то, что мне нужно, в конце основной.
Так, например, если мне нужен экземпляр и некоторая другая переменная из главной функции на верхнем уровне, можно сделать:
def main():
myclass = MyClass()
a = 4
return (my class, a)
if __name__ == '__main__':
ret = main()
Если вы теперь вызываете свой скрипт с помощью bpython -i scriptname, у вас будет переменная 'ret' в глобальном пространстве имен, а ret [0] содержит ваш экземпляр класса, ret [1] имеет номер 4.