这是一个简单的 python 程序,当使用 Transcrypt 3.7.5 编译时会导致无限循环:
stack = [ch for ch in "Hello"]
while stack:
print(stack.pop())
这可以通过替换来解决while stack:
,while len(stack):
但这只是一个不可接受的解决方法。是否有任何其他与 Transcrypt 相关的编译指示开关来解决它?
这是一个简单的 python 程序,当使用 Transcrypt 3.7.5 编译时会导致无限循环:
stack = [ch for ch in "Hello"]
while stack:
print(stack.pop())
这可以通过替换来解决while stack:
,while len(stack):
但这只是一个不可接受的解决方法。是否有任何其他与 Transcrypt 相关的编译指示开关来解决它?
使用编译指示打开真实性:
# __pragma__ ('tconv')
stack = [ch for ch in "Hello"]
while stack:
print(stack.pop())
这将打印:
o
l
l
e
H
您还可以使用-t
or--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:
然而,使用它的页面需要很长时间才能加载,这对于我们的需求是不可接受的,因为我们将它用于实际项目中的生产。一般来说,如果您打算专业地使用它,那么阅读文档是值得的。我必须说我自己很少阅读任何文档,但在这种情况下,它得到了回报。
如果它与提供的代码无限循环,那只是一个不合格的 Python 解释器。CPython 解释器不会无限循环(test.py
包含问题中的代码):
PS C:\Users\Matt> python test.py
o
l
l
e
H
PS C:\Users\Matt>
很难提出解决方法,因为如果使用不合格的口译员,所有的赌注都会失败。
免责声明:我对 Transcrypt 了解不多,但您可能应该打开一个错误报告