Assign a print statement to a variable in a function in Python 2.7

前端 未结 3 910
生来不讨喜
生来不讨喜 2021-01-29 12:38

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          


        
相关标签:
3条回答
  • 2021-01-29 13:11

    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

    0 讨论(0)
  • 2021-01-29 13:18

    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?

    0 讨论(0)
  • 2021-01-29 13:18

    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

    0 讨论(0)
提交回复
热议问题