>백엔드 개발 >파이썬 튜토리얼 >`lyrics()` 함수가 '첫 번째 줄'을 인쇄하는데도 print(lyrics())가 'None'을 반환하는 이유는 무엇입니까?

`lyrics()` 함수가 '첫 번째 줄'을 인쇄하는데도 print(lyrics())가 'None'을 반환하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-08 22:28:13863검색

Why does print(lyrics()) return

왜 '없음'이 출력되나요? 두 개의 Print 문 풀기

다음 함수를 사용할 때 특이한 문제가 발생합니다.

def lyrics():
    print("The very first line")
print(lyrics())

예상된 "첫 번째 줄" 대신 당황스럽게도 "The 첫 번째 줄" 다음에 "없음"이 나옵니다.

숨겨진 내용 공개 진실

이 당황스러운 행동의 원인은 두 개의 print 문에 있습니다. 가사 기능 내에서 첫 번째 문은 "첫 번째 줄"을 표시하는 역할을 합니다. 그러나 함수는 명시적으로 값을 반환하지 않습니다. 이는 Python이 기본값 None을 할당한다는 의미입니다.

함수 외부의 두 번째 print 문은 Lyrics()에서 반환된 값을 출력하려고 시도합니다. 이 함수는 효과적으로 None을 반환하므로 터미널에 "None"을 인쇄합니다.

문제 해결: 반환 문 수용

이 상황을 해결하고 원하는 결과를 보장하려면 출력에서 명시적으로 값을 반환하도록 가사 함수를 수정합니다. return 문을 추가하면 함수가 생성하는 값을 지정할 수 있습니다.

예를 들어 다음 코드를 고려해 보세요.

def lyrics():
    print("The very first line")
    return None

print(lyrics())

이제 코드는 "첫 번째 line"은 가사 함수 내의 return 문이 명시적으로 None을 반환하므로

Return 이해하기 기본값

함수 내에서 return 문을 생략하면 Python이 자동으로 None을 반환한다는 점에 유의할 가치가 있습니다. 코드에 명시적으로 명시되어 있지는 않지만, 이 동작은 반환 값을 명시적으로 지정하지 않은 함수가 여전히 None을 인쇄하는 이유를 이해하는 데 중요합니다.

추가 예

자세한 내용은 설명을 위해 다음 코드 조각을 고려하십시오.

def test1():
    print("In function.")

a = test1()
print(a)  # Prints None

print(test1())  # Prints "In function." and then None

test1()  # Prints "In function." and returns None (not printed)

이 예에서 test1()은 암시적으로 None을 반환합니다. 반환문이 없습니다. 따라서 후속 print 문은 앞에서 언급한 대로 동작합니다.

특정 반환 값을 보장하려면 원하는 값이 포함된 return 문을 사용하세요. 예를 들면 다음과 같습니다.

def test():
    return "ACV"

print(test())  # Prints "ACV"

a = test()
print(a)  # Prints "ACV"

test() 함수 내에서 "ACV"를 명시적으로 반환하면 출력에 의도한 값이 올바르게 표시됩니다.

위 내용은 `lyrics()` 함수가 '첫 번째 줄'을 인쇄하는데도 print(lyrics())가 'None'을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.