что-то не так - с Python Shell (Google App)?

Python Shell - shell.appspot.com действует странный? или я пропускаю что-то?

Google App Engine/1.3.0
Python 2.5.2 (r252:60911, Apr  7 2009, 17:42:26) 
[GCC 4.1.0]

>>> mycolors = ['red','green','blue']
>>> mycolors.append('black')
>>> print mycolors
['red', 'green', 'blue']

Но ниже результата ожидается

['red', 'green', 'blue', 'black']

И также то же с типом данных словаря.

Спасибо,

Abhinay

5
задан David Underhill 21 July 2010 в 22:00
поделиться

2 ответа

[

] Короткий ответ [

] [

] Это известная ошибка. Короткий ответ:[

] [
    ] [
  • ]Включите все в одну строку: []mycolors.append('black'); печатайте mycolors[][
  • ] [
  • ] Используйте мой бесплатный программный инструмент, []App Engine Console[]. Мой код получен из оболочки, и я исправил эту ошибку.[
  • ] [
] [

]Длинный ответ[

] [

]Ошибка заключается в том, как это состояние хранится между каждой командой, которую вы вводите. Web-запросы являются только апатридами и только запросами/ответами; однако оболочка (и мое консольное приложение) должна чувствовать себя как поток сознания, как это происходит в традиционной Python подсказке.[

] [

]Реализация примерно такова:[

] [
    ] [
  1. ]Получить запрос от браузера, который включает строку для выполнения[
  2. ] [
  3. ]Потянуть вверх определенный сеанс, в котором браузер находится "внутри". По сути, это модуль, похожий на []__main__[] с некоторыми привязками переменных.[
  4. ] [
  5. ]Выполните данную строку кода в контексте этого модуля[
  6. ] [
  7. ]Сохраните состояние, пройдя через все привязки переменных в контексте и.... [
      ] [
    • ]Если переменная до сих пор невидима, сохраните ее имя и значение в хранилище данных[
    • ] [
    • ]Если нет, то проигнорируйте ее. [] Вот ошибка. На самом деле нужно проверить, изменилась ли переменная.[][
    • ] [
    ][
  8. ] [
]
4
ответ дан 14 December 2019 в 19:14
поделиться

У меня похожие проблемы, поэтому я бы сказал, что происходит что-то странное.

>>> a = 2
>>> a += 3
>>> a
5
>>> b = [2]
>>> b += [3]
>>> b
[2]
>>> [2] + [3]
[2, 3]
>>> class Dave: pass
>>> d = Dave()
>>> d
<__main__.Dave instance at 0x6df2d063e08a98e8>
>>> d.a = 1
>>> d.a
Traceback (most recent call last):
  File "/base/data/home/apps/shell/1.335852500710379686/shell.py", line 267, in get
    exec compiled in statement_module.__dict__
  File "<string>", line 1, in <module>
AttributeError: Dave instance has no attribute 'a'

Похоже, об этом уже сообщали: Выпуск 29: Shell - сущности неизменны в оболочке . К сожалению, есть ответ на зарегистрированную проблему.

.
1
ответ дан 14 December 2019 в 19:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: