是否有任何现有的 Web 应用程序可以让多个用户同时使用交互式 IDLE 类型的会话?
就像是:
IDLE 2.6.4
Morgan: >>> letters = list("abcdefg")
Morgan: >>> # now, how would you iterate over letters?
Jack: >>> for char in letters:
print "char %s" % char
char a
char b
char c
char d
char e
char f
char g
Morgan: >>> # nice nice
如果没有,我想创建一个。我可以使用一些模拟交互式会话的模块吗?我想要一个这样的界面:
def class InteractiveSession():
''' An interactive Python session '''
def putLine(line):
''' Evaluates line '''
pass
def outputLines():
''' A list of all lines that have been output by the session '''
pass
def currentVars():
''' A dictionary of currently defined variables and their values '''
pass
(尽管最后一个功能更像是一个额外的功能。)
以另一种方式表述我的问题:我想为 IDLE 创建一个新的前端。我怎样才能做到这一点?
更新:或者我可以通过模拟IDLE eval()
?
更新2:如果我做了这样的事情怎么办:
我已经设置了一个简单的 GAE Python 聊天应用程序,它允许用户登录、创建聊天室并相互聊天。
除了将传入消息保存到数据存储区之外,我还可以执行以下操作:
def putLine(line, user, chat_room):
''' Evaluates line for the session used by chat_room '''
# get the interactive session for this chat room
curr_vars = InteractiveSession.objects.where("chatRoom = %s" % chat_room).get()
result = eval(prepared_line, curr_vars.state, {})
curr_vars.state = curr_globals
curr_vars.lines.append((user, line))
if result:
curr_vars.lines.append(('SELF', result.__str__()))
curr_vars.put()
InteractiveSession 模型:
def class InteractiveSession(db.Model):
# a dictionary mapping variables to values
# it looks like GAE doesn't actually have a dictionary field, so what would be best to use here?
state = db.DictionaryProperty()
# a transcript of the session
#
# a list of tuples of the form (user, line_entered)
#
# looks something like:
#
# [('Morgan', '# hello'),
# ('Jack', 'x = []'),
# ('Morgan', 'x.append(1)'),
# ('Jack', 'x'),
# ('SELF', '[1]')]
lines = db.ListProperty()
这能行吗,还是我要走/这种方法不可行/当我应该使用已经构建的东西时,我正在重复工作?
更新3:另外,假设我让其他一切正常,我想要语法突出显示。理想情况下,我有一些 API 或服务可以用来解析代码并适当地设置它的样式。
for c in "characters":
会成为:
<span class="keyword">for</span> <span class="var">c</span> <span class="keyword">in</span> <span class="string>"characters"</span><span class="punctuation">:</span>
是否有一个很好的现有 Python 工具可以做到这一点?