странное поведение IPython: «проход», «возврат» или «повышение» в имени переменной завершает определение функции / класса - PullRequest
2 голосов
/ 30 мая 2011

Я работал над учебником по SQLAlchemy ORM в оболочке IPython и дошел до того, что мне пришлось поместить password = Column(String) в определение класса. Как ни странно, определение класса прекратилось, как только я его ввел.

Немного поиграв, я обнаружил, что любая строка, начинающаяся с pass, return или raise в определении класса или функции, например

def f(x):
    returnfoo = None

завершает определение в IPython. Это не происходит в интерпретаторе Python по умолчанию, так что это не проблема Python. Я бы предположил, что это ошибка в IPython, но хотел убедиться, что это не только моя система; Кто-нибудь может проверить это поведение?

РЕДАКТИРОВАТЬ: я использовал IPython 0.11.dev для Python 2.6, предустановленный на Mac OS X Snow Leopard. На 0.10.2 он фактически не завершает определение функции / класса - и

def f(x):
    return

но он по умолчанию сбрасывает отступ, так что если вы нажмете Введите снова, определение класса закончится.

Ответы [ 2 ]

1 голос
/ 30 мая 2011

В моей системе это не работает.

In [1]: def f(x):
   ...:     returnfoo = None
   ...:     return returnfoo
   ...: 

Моя версия:

$ ipython -V
0.10.2
0 голосов
/ 30 мая 2011

Нет этой проблемы:

>>> def f(x):
    returnfoo = None
    return x
...: 

>>> f(1)
<<< 1
...