2016-10-25 4 views
1

필자가 작성한 다른 코드를 테스트하는 코드가 있습니다 (ipython 노트).print 문 Python 2.7에 대한 구문이 잘못되었습니다.

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

이것은 내가 가지고있는 코드이며 파이썬 3 환경에서 작동합니다. 그러나, 그것은 파이썬 2.7에서 작동하지 않습니다. 대신 아래에 오류가 발생합니다.

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

나는 위가 python3뿐만 아니라 python2.7 환경에서 작동 얻기 위해 코드에 변경을하고 싶습니다.

아무도 말해 줄 수 있습니까? 미리 감사드립니다.

+1

참조 : 모든 해답에 대한 http://stackoverflow.com/questions/2970858/why-doesnt-print-work-in-a-lambda 기본적으로 파이썬에서 지원되지 않는 2.7 – Aviad

+0

덕분에 많은 대답했다. 나는 그것이 중복 된 질문이라는 것을 몰랐다. – jsh114

답변

1

파이썬 2에서 print은 함수가 아닌 명령문이며 lambda 표현식에서는 사용할 수 없습니다. 당신은이 print_function 기능을 추가하여 작업 할 수 있습니다 :

파이썬 2에서
from __future__ import print_function 
print_closest = lambda w, wl: print('{}: {} ({})'.format(w, *closest_match(w, wl))) 
1

, print는 성명 아닌 함수 (함수로는 표현 될 것 사용). lambda은 표현식으로 만 구성 될 수 있으며 전체 명령문으로는 구성 될 수 없습니다.

즉 Py2에 Py3 print 함수를 사용할 수 있습니다. 당신이 전환하려는 모듈에서, (다른 모든 전에, 어떤 오두막 또는 인코딩 주석 후) 파일의 코드의 첫 번째 행으로 다음을 추가

from __future__ import print_function 

will make print a function as it is in Py3 것을.

관련 문제