杰瑞科技汇

Python中return和print到底有什么区别?

Python return 和 print:一文搞懂它们的本质区别与正确用法(新手必看)**

Python中return和print到底有什么区别?-图1
(图片来源网络,侵删)

刚学Python的你,是否也曾对 returnprint 感到困惑?明明都能在屏幕上看到输出,为什么有时候一个能用,另一个却不行?本文将通过生动的比喻和丰富的代码示例,彻底揭开 returnprint 的神秘面纱,让你明白它们在Python编程中的真正角色,写出更专业、更高效的代码,无论你是准备面试还是日常开发,这都是一篇你不能错过的深度指南。


引言:一个常见的“坑”

我们先来看一个场景,很多Python初学者都会在这里“栽跟头”:

# 场景一:使用 print
def add_print(a, b):
    result = a + b
    print(f"计算结果是: {result}")
# 调用函数
sum1 = add_print(3, 5)
print(f"sum1 的值是: {sum1}")

输出结果:

计算结果是: 8
sum1 的值是: None

咦? 为什么 sum1 的值是 None 而不是 8?我明明在函数里用 print 输出了结果啊!

Python中return和print到底有什么区别?-图2
(图片来源网络,侵删)

我们再换一个场景:

# 场景二:使用 return
def add_return(a, b):
    result = a + b
    return result
# 调用函数
sum2 = add_return(3, 5)
print(f"sum2 的值是: {sum2}")

输出结果:

sum2 的值是: 8

这次,sum2 正确地获得了值 8

这两个简单的例子,直击了 printreturn 的核心区别,下面,我们来彻底搞懂它们。

Python中return和print到底有什么区别?-图3
(图片来源网络,侵删)

print:程序的“嘴巴”——负责展示

你可以把 print 函数想象成程序的“嘴巴”,它的唯一职责就是把你给它的东西(变量、字符串、数字等)“说”出来,显示在控制台(屏幕)上。

核心特点:

  1. 副作用print 的作用是产生“副作用”(Side Effect),即与程序外部进行交互(向屏幕输出),它本身不参与计算流程。
  2. 没有返回值print 函数在执行完任务后,会默默地返回一个特殊的值——None,这意味着它本身不“携带”任何有用的数据返回给调用者。
  3. 主要用于调试和用户交互:在开发阶段,我们用它来检查变量的值;在程序运行时,我们用它给用户展示信息。

代码示例:

# 1. 调试信息
user_name = "Alice"
print(f"当前正在处理用户: {user_name}") # 用于调试,告诉开发者程序运行到这里了
# 2. 用户交互
print("欢迎来到我们的程序!")
age = input("请输入您的年龄: ")
print(f"您输入的年龄是: {age}")
# 3. 打印结果(但不保存)
print("1 + 1 =", 1 + 1) # 直接展示,无法后续使用这个结果

当你只是想让别人(或者未来的自己)看到某个信息时,用 print


return:函数的“信使”——负责传递

你可以把 return 语句想象成函数的“信使”,当一个函数完成任务后,它会通过 return 这个信使,把计算结果(或者任何你指定的数据)“打包”好,传递给调用这个函数的地方。

核心特点:

  1. 数据返回return 的核心功能是返回一个值,这个值可以是数字、字符串、列表、字典,甚至是另一个函数。
  2. 终止函数return 语句一旦执行,函数会立即停止执行,并将控制权连同返回值一并交还给调用者。
  3. 构建程序逻辑的基石return 是函数式编程的精髓,没有 return,函数就无法将计算结果融入更大的程序逻辑中,代码将变得支离破碎。

代码示例:

# 1. 返回计算结果,供后续使用
def multiply(x, y):
    return x * y
area = multiply(5, 6) # 30 被返回并赋值给 area
print(f"计算出的面积是: {area}")
# 2. 根据条件返回不同的值
def is_adult(age):
    if age >= 18:
        return True
    else:
        return False
can_vote = is_adult(20)
if can_vote:
    print("此人已成年,可以投票。")
else:
    print("此人未成年,不可投票。")
# 3. 返回多个值(本质是返回一个元组)
def get_user_info():
    name = "Bob"
    age = 30
    return name, age # 返回一个元组: ("Bob", 30)
user_name, user_age = get_user_info()
print(f"用户名: {user_name}, 年龄: {user_age}")

当一个函数的计算结果需要被其他部分代码使用时,必须用 return


核心区别对比:一张图看懂

特性 print() return
核心功能 在控制台显示信息 返回一个值给调用者
比喻 程序的“嘴巴” 函数的“信使”
是否终止函数 否,函数会继续执行 是,遇到 return 函数立即结束
返回值 始终返回 None 返回你指定的任何数据
主要用途 调试、日志、用户交互 数据传递、逻辑构建、函数组合
能否被变量接收 不能(变量会得到 None 可以

实战演练:何时用 print,何时用 return

案例:编写一个函数,判断一个数是否为素数。

错误示范:只用 print

def check_prime_print(n):
    if n <= 1:
        print(f"{n} 不是素数。")
        return # 如果不写return,函数会继续执行下面的逻辑
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            print(f"{n} 不是素数。")
            return
    print(f"{n} 是素数。")
# 调用
check_prime_print(17) # 输出: 17 是素数。
check_prime_print(15) # 输出: 15 不是素数。
# 想把结果用在条件判断里?不行!
if check_prime_print(17): # check_prime_print(17) 返回的是 None
    print("这个数很特殊!") # 这行代码永远不会执行

这个函数虽然能打印结果,但无法被其他逻辑复用,因为它不返回任何有用的布尔值。

正确示范:用 return

def check_prime_return(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True
# 调用
is_17_prime = check_prime_return(17)
is_15_prime = check_prime_return(15)
print(f"17是素数吗? {is_17_prime}") # 输出: 17是素数? True
print(f"15是素数吗? {is_15_prime}") # 输出: 15是素数? False
# 可以完美地用在条件判断中
if check_prime_return(17):
    print("17 是一个素数,很特殊!") # 输出: 17 是一个素数,很特殊!

这个版本才是专业和可复用的。return 将判断结果 TrueFalse 传递出来,让调用者可以自由决定如何处理这个结果。


总结与最佳实践

通过以上的剖析,我们可以得出清晰的结论:

  1. print 是为了“看”:它的作用是输出,让信息在屏幕上可见,主要用于调试、展示给用户,或记录日志,它不参与程序的内部数据流。
  2. return 是为了“用”:它的作用是返回,将函数的计算结果作为数据传递出去,供程序的其它部分使用,它是构建模块化、可复用代码的基石。

给初学者的最佳实践:

  • 函数设计原则:一个函数应该有单一、明确的职责,如果一个函数的主要任务是计算并返回一个结果,那么它就应该使用 return,而不是用 print 来“展示”这个结果。
  • 调试时用 print:在写代码时,不确定变量值是多少?用 print 打印出来看看,这是最直接的调试方法,代码调通后,可以逐步移除或替换掉这些调试用的 print
  • 用户交互时用 print:当需要向用户展示欢迎信息、操作提示或最终结果时,print 是不二之选。
  • 构建逻辑时用 return:当函数的输出需要成为另一个函数的输入,或者需要被 if 语句、for 循环等控制结构处理时,必须使用 return

记住这个黄金法则:

如果你想让别人(屏幕)看到它,用 print 如果你想让你的代码(程序)使用它,用 return

掌握 returnprint 的区别,是Python学习道路上的一个重要里程碑,希望这篇文章能帮你彻底理解它们,告别混乱,写出更加清晰、专业的Python代码!

分享:
扫描分享到社交APP
上一篇
下一篇