Home >Backend Development >Python Tutorial >Why does print(lyrics()) return 'None' even though the function `lyrics()` prints 'The very first line'?
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!