Home >Backend Development >Python Tutorial >Why does print(lyrics()) return 'None' even though the function `lyrics()` prints 'The very first line'?

Why does print(lyrics()) return 'None' even though the function `lyrics()` prints 'The very first line'?

DDD
DDDOriginal
2024-12-08 22:28:13863browse

Why does print(lyrics()) return

Why the 'None' Output? Unraveling the Two Print Statements

A peculiar issue arises when using the following function:

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

Instead of the expected "The very first line," the output bafflingly returns "The very first line" followed by "None."

Unveiling the Hidden Truths

The culprit behind this perplexing behavior lies in the presence of two print statements. Within the lyrics function, the first statement is responsible for displaying "The very first line." However, the function does not explicitly return a value, which means that Python assigns the default value of None to it.

The second print statement outside the function then attempts to output the value returned by lyrics(). Since the function effectively returns None, it prints "None" to the terminal.

Rectifying the Issue: Embracing the Return Statement

To remedy this situation and ensure the desired output, modify the lyrics function to explicitly return a value. By adding a return statement, you can dictate the value that the function produces.

For instance, consider the following code:

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

print(lyrics())

Now, the code will correctly print "The very first line," as the return statement within the lyrics function explicitly returns None.

Understanding the Return Default

It's worth noting that if you omit the return statement within a function, Python automatically returns None. While not explicitly stated in the code, this behavior is crucial for understanding why functions that do not explicitly specify a return value still print None.

Additional Examples

For further clarification, consider the following code snippet:

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)

In this example, test1() implicitly returns None due to the absence of a return statement. Hence, the subsequent print statements behave as mentioned earlier.

To ensure a specific return value, employ the return statement with the desired value. For instance:

def test():
    return "ACV"

print(test())  # Prints "ACV"

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

By explicitly returning "ACV" within the test() function, the output correctly displays the intended value.

The above is the detailed content of Why does print(lyrics()) return 'None' even though the function `lyrics()` prints 'The very first line'?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn