Python “与”之间的正式区别是什么;“打印”;及;return";?

Python “与”之间的正式区别是什么;“打印”;及;return";?,python,Python,假设我定义了一个简单函数,它将显示传递给它的整数: def funct1(param1): print(param1) return(param1) 输出将是相同的,但我知道当函数中使用return语句时,可以再次使用输出。否则,不能使用print语句的值。但是我知道这不是正式的定义,有人能给我提供一个好的定义吗?使用print()您将向标准输出显示param1的值,而使用return您将向调用者发送param1 这两种说法的含义截然不同,你不应该看到相同的行为。张贴你的整个计

假设我定义了一个简单函数,它将显示传递给它的整数:

def funct1(param1):
    print(param1)
    return(param1)
输出将是相同的,但我知道当函数中使用
return
语句时,可以再次使用输出。否则,不能使用
print
语句的值。但是我知道这不是正式的定义,有人能给我提供一个好的定义吗?

使用
print()
您将向标准输出显示
param1
的值,而使用
return
您将向调用者发送
param1

这两种说法的含义截然不同,你不应该看到相同的行为。张贴你的整个计划,它会更容易地指出差异给你

Edit:正如其他人所指出的,如果您在交互式python shell中,您会看到相同的效果(打印值),但这种情况的发生是因为shell计算表达式并打印其输出


在这种情况下,带有
return
语句的函数作为
return
本身的参数进行求值,因此返回值被回显。不要让交互式shell欺骗你!:)

输出仅在交互终端中相同。当您正常执行程序时,结果将完全不同


我建议你读一本关于Python的书,或者读一本教你基本知识的教程,因为这是一件非常基本的事情。

截然不同的事情。想象一下,如果我有这个python程序:

#!/usr/bin/env python

def printAndReturnNothing():
    x = "hello"
    print(x)

def printAndReturn():
    x = "hello"
    print(x)
    return x

def main():
    ret = printAndReturn()
    other = printAndReturnNothing()

    print("ret is: %s" % ret)
    print("other is: %s" % other)

if __name__ == "__main__":
    main()
您希望输出结果是什么

hello
hello
ret is : hello
other is: None

为什么? 为什么??因为
print
获取其参数/表达式并将其转储到标准输出,所以在我编写的函数中,
print
将输出
x
的值,即
hello

  • printAndReturn
    将向方法的调用者返回
    x
    ,因此:

    ret=printAndReturn()

ret
将具有与
x
相同的值,即
“hello”

  • printAndReturnNothing
    不返回任何内容,因此:

    other=printAndReturnNothing()

other
实际上变成了
None
,因为这是python函数的默认返回。Python函数总是返回一些东西,但是如果声明了no
return
,函数将返回
None


资源 阅读python教程将向您介绍以下概念:

以下是python教程中有关函数的内容:

与往常一样,此示例演示了一些新的Python功能:

return语句从函数返回一个值。不带表达式参数的return返回None。从函数末尾脱落也会返回None

print
(或者
print()
,如果您使用的是Python 3),它可以精确地打印关键字后面的任何内容。它还可以做一些很好的事情,比如用空格自动连接多个值:

print 1, '2', 'three'
# 1 2 three
否则,从程序的角度来看,
print
print()
)将无能为力。它不会以任何方式影响控制流,执行将随着代码块中的下一条指令而恢复:

def foo():
    print 'hello'
    print 'again'
    print 'and again'
另一方面,
return
(而不是
return()
)被设计为立即中断控制流并退出当前函数,并向调用函数的调用方返回指定值。它总是这样做,只是这样<代码>返回本身不会导致任何内容打印到屏幕上。即使不指定返回值,也会返回隐式的
None
。如果您完全跳过一个
返回
,则函数结束时仍会出现一个隐式
无返回

def foo(y):
    print 'hello'
    return y + 1
    print 'this place in code will never get reached :('
print foo(5)
# hello
# 6

def bar():
    return # implicit return None
print bar() is None
# True

def baz(y):
    x = y * 2
    # implicit return None
z = baz()
print z is None
# True

您看到打印到屏幕上的返回值的原因是,您可能在交互式Python shell中工作,该shell会自动打印任何结果,以方便您自己。

显示差异的简单示例:

def foo():
    print (5)

def bar():
    return 7

x = foo() 
y = bar()

print (x) 
# will show "None" because foo() does not return a value
print (y) 
# will show "7" because "7" was output from the bar() function by the return statement.

我将从一个基本的解释开始打印只是向人类用户显示一个字符串,表示计算机内部正在发生的事情。计算机无法利用那次打印返回是函数返回值的方式。人类用户通常看不到该值,但计算机可以在进一步的功能中使用该值

更宽泛地说,打印不会以任何方式影响功能。它只是为了人类用户的利益。它对于理解程序是如何工作的非常有用,并且可以在调试中使用它来检查程序中的各种值,而不会中断程序

返回是函数返回值的主要方式。所有函数都将返回一个值,如果没有return语句(或yield,但不用担心),它将返回一个值。然后,函数返回的值可以进一步用作传递给另一个函数的参数,存储为变量,或者仅打印以方便用户

考虑以下两个计划:

def function_that_prints():
    print "I printed"

def function_that_returns():
    return "I returned"

f1 = function_that_prints()
f2 = function_that_returns()
print "Now let us see what the values of f1 and f2 are"
print f1
print f2

您正在使用python交互式提示吗?
print
prints和
return
returns。您是从哪里想到
return
会输出任何内容的?