Получение неожиданного 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
Ответы
Ответ 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
Что я делаю, когда получаю Ошибки имени...