python 2.x 에서 print 는 function 이 아니고 statement 입니다. 즉 "side-effect" (화면에 출력) 만 있고 리턴값이 없습니다.
만약에 def p(x): print x 처럼 만드셨다면 이건 암묵적으로 None 을 리턴하는 함수이기 때문에 map(p, range(1,5)) 의 결과는 [None,None,None,None] 이 될겁니다. 물론 화면에 1,2,3,4 를 출력은 합니다.
map 은 iterable (list 같은 것들) 의 각각의 원소에 함수를 적용해서 새로운 iterable (python 의 경우 list) 을 만드는 것으로, 일단 for-loop 과는 다릅니다. 따라서 python 같은 언어라면 그냥 for 문을 돌리는게 어떠신지요?
굳이 map 을 쓰고 싶다면 방법은, python 2.x 에서는 from __future__ import print_function 하면 python 3.x 처럼 print 를, None 을 리턴하고 화면에 출력하는 side-effect 를 가지는, "함수" 로 취급합니다. 즉 위의 p(x) 와 비슷해집니다.
그러면 map(print, range(1,5)) 처럼 사용할 수 있는데, 역시 [None,None,...]을 리턴하므로 (리턴값을 안받으면 되지만) 별로 권장하고 싶진 않습니다.
python 2.x 에서 print 는 함수가 아닙니다.
python 2.x 에서 print 는 function 이 아니고 statement 입니다. 즉 "side-effect" (화면에 출력) 만 있고 리턴값이 없습니다.
만약에 def p(x): print x 처럼 만드셨다면 이건 암묵적으로 None 을 리턴하는 함수이기 때문에 map(p, range(1,5)) 의 결과는 [None,None,None,None] 이 될겁니다. 물론 화면에 1,2,3,4 를 출력은 합니다.
map 은 iterable (list 같은 것들) 의 각각의 원소에 함수를 적용해서 새로운 iterable (python 의 경우 list) 을 만드는 것으로, 일단 for-loop 과는 다릅니다. 따라서 python 같은 언어라면 그냥 for 문을 돌리는게 어떠신지요?
굳이 map 을 쓰고 싶다면 방법은, python 2.x 에서는 from __future__ import print_function 하면 python 3.x 처럼 print 를, None 을 리턴하고 화면에 출력하는 side-effect 를 가지는, "함수" 로 취급합니다. 즉 위의 p(x) 와 비슷해집니다.
그러면 map(print, range(1,5)) 처럼 사용할 수 있는데, 역시 [None,None,...]을 리턴하므로 (리턴값을 안받으면 되지만) 별로 권장하고 싶진 않습니다.
자세한 답변 잘 읽었습니다. 파이썬 초보인데도 잘
자세한 답변 잘 읽었습니다. 파이썬 초보인데도 잘 가르쳐주셔서 고맙습니다.
----------------------------------------------------
개인 블로그: https://kangssu.com
댓글 달기