Python Shell(谷歌应用程序)有问题吗?

时间:2010-01-08 12:58:55

标签: python google-app-engine shell

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']

也与字典数据类型相同。

谢谢,

阿希奈

2 个答案:

答案 0 :(得分:4)

简答

这是一个已知的错误。简短的回答:

  • 在一行中包含所有内容:mycolors.append('black'); print mycolors
  • 使用我的免费软件工具App Engine Console。我的代码来自shell,我修复了这个错误。

答案很长

该错误涉及在您键入的每个命令之间存储状态的方式。 Web请求只是无状态和请求/响应;然而,shell(和我的控制台应用程序)应该像传统的Python提示一样感觉像意识流。

实施大致如下:

  1. 从浏览器中获取请求,其中包含要执行的行
  2. 拉出浏览器“在”的特定会话。基本上,这是一个类似于__main__的模块,带有一些变量绑定。
  3. 在该模块的上下文中执行给定的代码行
  4. 通过循环遍历上下文中的所有变量绑定来保存状态...
    • 如果变量是迄今未见过的,请将其名称和值存储在数据存储区中
    • 如果没有,请忽略它。 这是错误。您应该检查变量是否已更改。

答案 1 :(得分:1)

我遇到了类似的问题所以我会说有些奇怪的事情发生了。

>>> 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'

此问题似乎已经报告:Issue 29: Shell - entities are immutable in the shell。不幸的是,对已记录的问题有回应。