왜 람다에서는 인쇄가 안 되는가?
왜 안 되지?
lambda: print "x"
이건 한 마디의 진술도 아닌 겁니까, 아니면 다른 겁니까?서류는 람다에서 허용되는 것에는 좀 희박한 것 같은데...
A lambda
의 몸은 하나의 표현이어야 한다.파이썬 2.x에서는print
진술이다.하지만 파이톤 3에서는print
함수(그리고 함수 적용은 표현식이기 때문에 람다에서 작동할 것이다).최신 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"
구문Error로 인해 python은 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
이런 것도 할 수 있다.
인쇄 문을 함수로 변환하는 함수 만들기:
def printf(text):
print text
인쇄:
lambda: printf("Testing")
Python 3.x에서는 람다의 의미론을 변경하지 않고 람다에서 CAN을 인쇄하십시오.
이것은 디버깅에 매우 편리하다.나는 이 '늦은 대답'을 올린다. 왜냐하면 그것은 내가 자주 사용하는 실용적인 속임수이기 때문이다.
'계기되지 않은' 람다가 다음과 같다고 가정해 보십시오.
lambda: 4
그렇다면 '계기된' 람다는 다음과 같다.
lambda: (print (3), 4) [1]
람다의 몸은 하나의 표현이어야 한다. print
진술서니까, 불행히도 다 끝났어.
여기, 당신은 당신의 질문에 대한 답을 볼 수 있다. print
Python에 표현된 것이 아니다라고 쓰여 있다.
python3 print는 함수로서, Jacques de Hoge가 제안하는 대로 어떤 것을 인쇄하고 반환할 수 있지만, 나는 다른 접근법을 좋아한다.lambda x: print("Message") or x
print
함수는 아무 것도 반환하지 않으므로None or x
코드 리턴스x
다른 방법:
lambda x: x or print("Message")
x가 false-ish인 경우에만 메시지를 인쇄함
이것은 루아에서 널리 사용되고, 파이톤에서도 당신은 대신에 할 수 있다.a if cond else b
글씨를 쓰다cond and a or b
참조URL: https://stackoverflow.com/questions/2970858/why-doesnt-print-work-in-a-lambda
'IT이야기' 카테고리의 다른 글
Resact Native 앱을 종료/종료하는 방법 (0) | 2022.03.29 |
---|---|
at 기호(@)는 ES6 javascript에서 무엇을 하는가? (ECMAScript 2015) (0) | 2022.03.28 |
gradlew assembly 실행 중 메모리 부족 오류릴리스 - react-native (0) | 2022.03.28 |
VueJ의 구성 요소 템플릿에서 Vuetify 대화 상자 열기s (0) | 2022.03.28 |
기본 반응, 정의되지 않은 인덱스에 대해 정의된 경로가 없음 (0) | 2022.03.28 |