2016-10-25 6 views
1

私が書いた他のコード(ipythonノートブック)をテストするコードがあります。print文の構文が無効です。python 2.7

print_closest = lambda w, wl: print('{}: {} ({})'.format(w, *closest_match(w, wl))) 

これはコードであり、Python 3環境で動作します。しかし、Python 2.7では動作しません。代わりに、以下のエラーが発生します。

print_closest = lambda w, wl: print('{}: {} ({})'.format(w, *closest_match(w, wl))) 
            ^
SyntaxError: invalid syntax 

私はそれがpython2.7環境などのpython3で作業を取得するために、上記のコードに変更をしたいのですが。

誰でも教えてください。前もって感謝します。

+1

参照:すべての答えのための http://stackoverflow.com/questions/2970858/why-doesnt-print-work-in-a-lambda 基本的には、Pythonの下でサポートされていない2.7 – Aviad

+0

おかげでたくさんは答えました。私はそれが重複した質問であることを知らなかった。 – jsh114

答えて

1

Python 2では、printは関数ではなくステートメントであり、lambda式では使用できません。あなたはそれがprint_function機能を追加することで動作させることができます:Pythonの2、print

from __future__ import print_function 
print_closest = lambda w, wl: print('{}: {} ({})'.format(w, *closest_match(w, wl))) 
1

は(関数として、それを使用して表現だろう)のステートメント、関数ではなく。 lambdaは、完全なステートメントではなく式のみで構成できます。

つまり、Py3にPy3 print関数を追加することができます。あなたは切り替えたいモジュールでは、(他のすべての前に、任意のシェバングやエンコーディングのコメントの後)ファイル内のコードの最初の行として次の行を追加します。

from __future__ import print_function 

will make print a function as it is in Py3ことを。

関連する問題