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函数总是返回一些东西,但是如果声明了noreturn
,函数将返回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
会输出任何内容的?