I\'m trying to assign a print statement to a variable in a function:
def namer(fn, ln=\'Smith\'):
# return value, default value
r = print \"Your name is
The print statement only prints the value to your monitor. It doesn't make any sense to assign it to a variable.
If your code is meant to store the string in the variable r, then:
r = "Your name is " + fn + " "+ ln
This would work provided fn is a string, if not:
r= "Your name is " + str(fn) +" "+ ln
As you noted, in Python2.x, print
is a statement. A statement is not an object, you cannot assign it to anything, you can just execute it.
Why would you want to return the print
statement? Why not the string to be printed or a function that, when called would execute the print statement?
Although it doesn't make sense to assign a print statement it makes sense to assign a print function to variable.
In this case you need to use the following import (only if using python 2)
from __future__ import print_function
A possible use case
import logging
use_print = True
if use_print:
log_fun = print
else:
log_fun = logging.info
log_fun('Spam')
The following statement will also be syntactically correct but it won't make sense
r = print('Something')
You will end up printing "Something" and assign None
to r
which is the return value of print function