Подтвердить что ты не робот

Получение неожиданного NameError в pycassaShell при вызове одной функции из другого

Я играю с pycassaShell (как часть Cassandra и Twissandra. При попытке добавить две функции внутри оболочки и вызвать один из другого, я получаю сообщение об ошибке, что имя не распознается.

Это, наверное, что-то очень простое, но я не нашел, как это сделать.

PycassaShell выглядит так:

In [3]: def aaa(): print 5
In [4]: aaa()
5

In [5]: def bbb(): aaa()

In [6]: bbb()
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
...
NameError: global name 'aaa' is not defined
4b9b3361

Ответ 1

Это проблема с тем, как Pycassa внедряет IPython. Это та же проблема @Benjamin White ссылки на использование Django IPython. Django исправлена ​​ошибка принятие запроса на перенос от основного dev-сервера IPython.

Я взял на себя ответственность за создать файл с Pycassa. Надеюсь, они смогут исследовать, почему подобное исправление не будет работать для них.

Ответ 2

Это нечетно. Я не знаю, почему это происходит, но попробуйте следующее:

def aaa(): print 5

def bbb():
    global aaa
    aaa()

Ответ 3

Возможно ли, что вы используете Python 3? Если вы находитесь, перейдите в http://docs.python.org/release/3.0.1/whatsnew/3.0.html для списка изменений.

Он работал как в IPython, так и в обычном python v2.7.

Ответ 4

Как насчет:

def aaa(self): print 5 
def bbb(): self.aaa

Что я делаю, когда получаю Ошибки имени...