#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목[re]실습자료의 사용자 정의 함수에서 print를 사용했을때 발생하는 오류2022-03-17 16:49
작성자

제가 이해한 바로 질문의 요지는

​"return print(abs(a-b)) 코드에서 print() 함수가 abs(a-b)의 값을 출력하고, 그 출력 값이 return에 의해 반환되어야 하는 것이 아닌가?" 입니다.


아래 참조 링크를 보시면 C언어에서 구현된 파이썬 내장 함수 print 함수에 대한 코드를 볼 수 있습니다.

코드를 보시면 print(*args, **kwargs) 함수는 어떤 값을 return하는 함수가 아니라 화면에 보여주는 함수입니다.

이것을 우리는 '출력'이라고 배웁니다. 즉, print()함수는 어떤 특정 값을 '반환'하는 것이 아니라 괄호 안에 넣은 값을 화면에 보여주는 역할을 합니다.

따라서 a = print("hello world") 코드를 입력하고 print(tpye(a)) 코드를 실행시켜보면 <Class 'NoneType'>의 결과를 보실 수 있습니다. 


결론적으로 return print(abs(a-b)) ​에서 print(abs(a-b))는 abs(a-b)의 값을 화면에 보여주기만 하고 return에는 "None", 아무 값도 주지 않습니다.

assert getDifference(10, 2) == 8 의 코드는 assert None == 8 의 코드를 실행시켰다고 보시면 됩니다.




아래 코드와 같이 print() 함수로 이리저리 가지고 놀다 보면 그 차이를 더 명확하게 아실 수 있을 것 같습니다.

*** print 내장 함수 구현 링크: https://stackoverflow.com/questions/59039963/implementation-of-print-in-python

*** 위 질문에 대한 print() 함수 실험 코드


def getDifference1(a, b):

    return print(abs(a-b))


def getDifference2(a, b):

    return abs(a-b)


a = 1

b = 2

c = getDifference1(a, b)

d = getDifference2(a, b)

print(c)

print(d)

print(type(c))

print(type(d))



댓글