왜 작동하지 않습니까?
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
답변
간단한 스터 빙을 위해 이것을 사용하는 경우 다음을 사용합니다.
fn = lambda x: sys.stdout.write(str(x) + "\n")
완벽하게 작동합니다.
답변
당신이 쓴 것은
def anon():
return print "x"
또한 SyntaxError가 발생합니다. 파이썬은 2.xx로 인쇄 할 값을 지정할 수 없습니다. python3에서는 말할 수 있습니다.
lambda: print('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
답변
이런 식으로 할 수 있습니다.
print 문을 함수로 변환하는 함수를 작성하십시오.
def printf(text):
print text
그리고 그것을 인쇄하십시오 :
lambda: printf("Testing")
답변
Python 3.x를 사용하면 람다의 의미를 변경하지 않고 print CAN이 람다에서 작동합니다.
특별한 방법으로 사용하면 디버깅에 매우 편리합니다. 이 ‘늦은 대답’을 게시합니다. 왜냐하면 내가 자주 사용하는 실용적인 방법이기 때문입니다.
‘악기없는’람다는 다음과 같다고 가정하십시오.
lambda: 4
그런 다음 ‘악기’람다는 다음과 같습니다.
lambda: (print (3), 4) [1]
답변
람다의 몸은 하나의 표현 이어야한다 . print
성명서이므로 안타깝게도