왜 작동하지 않습니까?
lambda: print "x"
이것은 하나의 진술이 아니거나 다른 것입니까? 람다에서 허용되는 내용에 대한 문서가 조금 드문 것 같습니다 ...
왜 작동하지 않습니까?
lambda: print "x"
이것은 하나의 진술이 아니거나 다른 것입니까? 람다에서 허용되는 내용에 대한 문서가 조금 드문 것 같습니다 ...
답변:
lambda
의 몸은되어야합니다 하나의 표현 . Python 2.x에서는 print
문장입니다. 그러나, 파이썬 3에서, print
A는 함수 (그리고 람다에서 작동하도록 기능 프로그램은 표현이다). 최신 Python 2.x를 사용하는 경우 역 호환 인쇄 기능을 사용할 수 있습니다.
In [1324]: from __future__ import print_function
In [1325]: f = lambda x: print(x)
In [1326]: f("HI")
HI
from __future__ import print_function
코드의 시작 부분에 있어야 하는지 알 수 있습니까? thx
print()
내장 메소드가 있습니다.
간단한 스터 빙을 위해 이것을 사용하는 경우 다음을 사용합니다.
fn = lambda x: sys.stdout.write(str(x) + "\n")
완벽하게 작동합니다.
당신이 쓴 것은
def anon():
return print "x"
또한 SyntaxError가 발생합니다. 파이썬은 2.xx로 인쇄 할 값을 지정할 수 없습니다. python3에서는 말할 수 있습니다.
lambda: print('hi')
인쇄가 명령문 대신 함수로 변경 되었기 때문에 작동합니다.
from __future__ import print_function
py2.x에서이를 가능하게합니다
lambda: sys.stdout.write('hi')
람다의 본문은 값을 반환하는 표현식이어야합니다. print
, 진술이므로 아무것도 반환하지 않습니다 None
. 마찬가지로, 결과를 print
변수에 할당 할 수 없습니다 :
>>> x = print "hello"
File "<stdin>", line 1
x = print "hello"
^
SyntaxError: invalid syntax
할당은 명령문이므로 변수 할당을 람다에 넣을 수도 없습니다.
>>> lambda y: (x = y)
File "<stdin>", line 1
lambda y: (x = y)
^
SyntaxError: invalid syntax