如何在Cython中打印没有换行符的格式变量

时间:2017-05-19 13:20:50

标签: python-3.x cython

$ cython --version
Cython version 0.25.2
$ python --version
Python 3.5.1

$ python setup.py build_ext -i

Error compiling Cython file:
------------------------------------------------------------
...
def say_hello_to(name):
    print("Hello %s!" % name, end='')
                                ^
------------------------------------------------------------

hello.pyx:2:33: Expected ')', found '='

$ cat hello.pyx
def say_hello_to(name):
    print("Hello %s!" % name, end='')
    print("Hello ", end='')

$ cat setup.py
from distutils.core import setup
from Cython.Build import cythonize

setup(
  name = 'hello',
  ext_modules = cythonize("hello.pyx")
)

问题>如何在没有换行符的情况下在Cython中打印?

谢谢

2 个答案:

答案 0 :(得分:0)

手边没有Cython可以测试,但直接打印到stdout应该可以解决问题:

import sys

sys.stdout.write("Hello %s!" % name)

答案 1 :(得分:0)

不想打印换行符吗?

在py2中:

print item,  # the comma ',' does the trick.

在py3中:

print(item, end='')

Cython编译默认为py2语法。如果一个使用语法仅在py3中有效,那么在编译时,设置中的language_level=3或命令行中的cython -3或jupyter notebook中的%%cython -3必须明确给出。

还有一件事,可以在cython中编写py2语法,但链接到py3头和库,这是将py2移植到py3的简单方法。