IT이야기

왜 람다에서는 인쇄가 안 되는가?

cyworld 2022. 3. 28. 21:32
반응형

왜 람다에서는 인쇄가 안 되는가?

왜 안 되지?

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진술서니까, 불행히도 다 끝났어.

여기, 당신은 당신의 질문에 대한 답을 볼 수 있다. printPython에 표현된 것이 아니다라고 쓰여 있다.

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

반응형