【问题标题】:Python Compilation in Terminal终端中的 Python 编译
【发布时间】:2014-06-12 17:23:07
【问题描述】:

我明天要参加 CodeForces 比赛,规则说 Python 是使用以下行编译的(其中 %1 是文件名):

python -c "compile(open('%1').read(), '%1', 'exec')"

我试图用这一行编译一个测试文件,但它根本没有做任何事情:

import sys
a = sys.stdin.readline()
sys.stdout.write(a)

但是,当我使用 python test.py 编译时,程序可以运行

我怎样才能使这个测试文件与上面的编译行一起工作?

编辑:我在 mac 上使用终端。

【问题讨论】:

  • 如何指定 %1 ?
  • %1 是要编译的文件名。我用test.py替换了%1

标签: python compiler-construction compilation compiler-errors


【解决方案1】:

如果您在交互式解释器中尝试,您可以看到发生了什么:

>>> compile(open('test.py').read(), 'read.py', 'exec')
<code object <module> at 0x10b916130, file "read.py", line 1>

compile built-in 将源代码行编译为代码对象。要实际运行代码对象,您需要exec它:

>>> codeobj = compile(open('test.py').read(), 'read.py', 'exec')
>>> exec(codeobj)
Hello, world!
Hello, world!
>>>

请注意,Python 2 和 Python 3 之间存在一些差异,主要是 exec 在 Py2 中是一个语句,但在 Py3 中是一个内置函数。以上应该适用于任何一个。

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 2015-11-18
  • 1970-01-01
  • 2017-10-02
相关资源
最近更新 更多