这是一个简单的python程序,当用Transcrypt 3.7.5编译时会导致无限循环:
stack = [ch for ch in "Hello"]
while stack:
print(stack.pop())
可以通过将while stack:
替换为while len(stack):
来解决,但这只是不可接受的解决方法。还有其他与Transcrypt相关的实用指示开关可以解决吗?
答案 0 :(得分:2)
使用编译指示打开真实性:
# __pragma__ ('tconv')
stack = [ch for ch in "Hello"]
while stack:
print(stack.pop())
这将打印:
o
l
l
e
H
您也可以使用-t
或--tconv
命令行开关,如以下文档所述:
http://www.transcrypt.org/docs/html/installation_use.html#available-command-line-switches
Transcrypt的目标是默认支持90%的CPython,另外9%作为通过编译指示和命令行开关提供的选项。
这个想法是,使用默认值进行编译可以为您提供快速而紧凑的代码,并且可以激活一些通过JavaScript支持的昂贵机制,作为选项。例如保持运算符重载。
另请参阅:
http://www.transcrypt.org/docs/html/what_why.html#what-is-transcrypt
和
http://www.transcrypt.org/docs/html/differences_cpython.html
有完全符合要求的浏览器Python,例如PyPyJS:
但是,使用此页面的页面加载时间很长,这对于我们的需求是不可接受的,因为我们将其用于实际项目中的生产。通常,如果您打算专业地使用此功能,则在阅读文档时值得。我必须说,我很少自己阅读任何文档,但是在这种情况下,它很值得。
答案 1 :(得分:0)
如果它与提供的代码无限循环,那只是一个不合格的Python解释器。 CPython解释器不会无限循环(test.py
包含问题中的代码):
PS C:\Users\Matt> python test.py
o
l
l
e
H
PS C:\Users\Matt>
很难建议一种解决方法,因为对于不合格的口译员,所有赌注都没有。
免责声明:我对Transcrypt不太了解,但您可能应该打开一个错误报告