很多 Python 的初学者都会遇到这个问题,returnprint 函数的区别是什么?区别就在于 return 是返回值,而 print 函数是打印值。

print

def break_words(stuff):
    words = stuff.split(' ')
    print(words) 

sentence = "All good things come to those who wait."
break_words(sentence)


['All', 'good', 'things', 'come', 'to', 'those', 'who', 'wait.']

return

def break_words(stuff):
    words = stuff.split(' ')
    return words

sentence = "All good things come to those who wait."
break_words(sentence)


# 无内容输出

使用 print 函数打印返回值

  • return
def break_words(stuff):
    words = stuff.split(' ')
    return words

sentence = "All good things come to those who wait."
s = break_words(sentence)
print(s)


['All', 'good', 'things', 'come', 'to', 'those', 'who', 'wait.']
  • return
def break_words(stuff):
    words = stuff.split(' ')

sentence = "All good things come to those who wait."
s = break_words(sentence)
print(s)


None

没有 return 语句,所以没能给函数 break_words() 赋值,打印出来也就是空值 None,即函数若无返回值,则默认返回 None

def foo():
    print("In the foo...")

def bar():
    print("In the bar...")
    return foo

func = bar()
print(func())


In the bar...
In the foo...
None

return 和 print 的区别

  • 在执行函数的时候 return 无法打印出值,return 返回的结果只能用于给变量赋值。而 pirnt 则可以直接打印。

  • 在函数中,凡是遇到 return,这个函数就会结束,这里要特别注意。针对无限循环的函数,可以使用 return 来终止循环。

# 退出循环

def func1():
    for i in range(1, 5):
        print(i)

def func2():
    for i in range(1, 5):
        return i

func1()
print('-----------------')
print(func2())


1
2
3
4
-----------------
1

程序读到 return 语句,其后面的语句不会再被执行,所以 print(func2()),只输出 "1" 这个结果就退出了; 而 print() 语句则不同,其后面的语句依然会被执行,所以调用 func1() 时,值 "1"、"2"、"3"、"4" 都输出了。

  • 在交互模式下,return 的结果会自动打印出来,而作为脚本单独运行时则需要 print 函数才能显示。
# 交互模式下

>>> x = 1
>>> y = 2
>>> def add():
...     return x + y
... 
>>> add()
3

return 和 print 的结合

def f_hello():
    x = "HELLO"
    print(x)

def f_return():
    x = "RETURN"
    return x

def main():
    Hello = f_hello()
    Return = f_return()
    print("this is %s " % Hello)
    print("that is %s " % Return)

if __name__ == "__main__":
    main()


HELLO
this is None 
that is RETURN     

f_hello() 函数无返回值, 所以打印 None

参考文章

https://www.cnblogs.com/xxtalhr/p/10742671.html

https://www.cnblogs.com/huskiesir/p/10376393.html

原创文章,转载请注明出处:http://www.opcoder.cn/article/32/