什么是return语句的简单基本解释是什么,如何在Python中使用它?
它和print
语句之间有什么区别?
什么是return语句的简单基本解释是什么,如何在Python中使用它?
它和print
语句之间有什么区别?
Answers:
该print()
函数在控制台中写入(即“打印”)字符串。该return
语句使您的函数退出并将值返回给其调用方。通常,功能的要点是接受输入并返回某些东西。return
当函数准备向其调用者返回值时使用该语句。
例如,这是一个同时使用print()
和的函数return
:
def foo():
print("hello from inside of foo")
return 1
现在,您可以运行调用foo的代码,如下所示:
if __name__ == '__main__':
print("going to call foo")
x = foo()
print("called foo")
print("foo returned " + str(x))
如果将其作为脚本(例如.py
文件)而不是在Python解释器中运行,则将获得以下输出:
going to call foo
hello from inside foo
called foo
foo returned 1
我希望这可以使它更清楚。解释器将返回值写入控制台,这样我就能理解为什么有人会感到困惑。
这是解释器的另一个示例,演示了这一点:
>>> def foo():
... print("hello from within foo")
... return 1
...
>>> foo()
hello from within foo
1
>>> def bar():
... return 10 * foo()
...
>>> bar()
hello from within foo
10
您可以看到,foo()
从中调用时bar()
,未将1写入控制台。相反,它用于计算从返回的值bar()
。
print()
是一个会引起副作用的函数(它在控制台中写入一个字符串),但是执行会从下一条语句恢复。return
使函数停止执行,并将值返回给调用它的函数。
"foo returned " + str(x)
,否则您将得到TypeError: cannot concatenate 'str' and 'int' objects
。
认为print语句会产生副作用,它会使您的函数向用户写一些文本,但不能其他函数使用。
我将尝试通过一些示例和Wikipedia的一些定义来更好地解释这一点。
这是Wikipedia中函数的定义
在数学中,函数将一个数量(即函数的自变量,也称为输入)与另一个数量(即函数的值)相关联。
这点考虑一下吧。当您说功能具有值时,这意味着什么?
这意味着您实际上可以用正常值替代函数的值!(假设两个值是相同类型的值)
你为什么要问?
可以接受相同类型的值作为输入的其他函数呢?
def square(n):
return n * n
def add_one(n):
return n + 1
print square(12)
# square(12) is the same as writing 144
print add_one(square(12))
print add_one(144)
#These both have the same output
对于仅依赖于其输入以产生其输出的功能,有一个花哨的数学术语:参照透明度。同样,来自维基百科的定义。
参照透明性和参照不透明性是计算机程序各部分的属性。如果可以在不更改程序行为的情况下将其替换为值,则表示该表达式是参照透明的
如果您是编程的新手,可能很难理解这意味着什么,但是我认为您将在经过一些试验后得到它。通常,您可以在函数中执行诸如print的操作,并且最后还可以具有return语句。
请记住,当您使用return时,您基本上是在说:“对该函数的调用与编写要返回的值相同”
如果您拒绝自己输入,Python实际上将为您插入一个返回值,这被称为“ None”,这是一种特殊的类型,它仅表示无意义或为null。
在python中,我们以“ def”开始定义一个函数,通常但不一定以“ return”结束该函数。
变量x的函数表示为f(x)。此功能做什么?假设此函数将x加2。因此,f(x)= x + 2
现在,此函数的代码将为:
def A_function (x):
return x + 2
定义函数后,可以将其用于任何变量并获得结果。如:
print A_function (2)
>>> 4
我们可以编写略有不同的代码,例如:
def A_function (x):
y = x + 2
return y
print A_function (2)
那也将给出“ 4”。
现在,我们甚至可以使用以下代码:
def A_function (x):
x = x + 2
return x
print A_function (2)
这也将得到4。请参见,返回旁边的“ x”实际上表示(x + 2),而不是“ A_function(x)”的x。
我想从这个简单的示例中,您将了解return命令的含义。
这个答案涵盖了上面没有讨论过的一些情况。
在返回语句可以终止你到达终点前一个函数的执行。这导致执行流程立即返回到调用方。
在第4行中:
def ret(n):
if n > 9:
temp = "two digits"
return temp #Line 4
else:
temp = "one digit"
return temp #Line 8
print("return statement")
ret(10)
条件语句执行后,该ret()
函数由于return temp
(第4行)而终止。因此,print("return statement")
不会执行。
输出:
two digits
在条件语句后出现的代码,或控制流无法到达的地方,是无效代码。
返回值
在第4和第8行中,条件执行后,将使用return语句返回临时变量的值。
找出print和return之间的区别:
def ret(n):
if n > 9:
print("two digits")
return "two digits"
else :
print("one digit")
return "one digit"
ret(25)
输出:
two digits
'two digits'
return
表示“从此函数输出该值”。
print
表示“将该值发送到(通常)stdout”
在Python REPL中,默认情况下,函数返回将输出到屏幕上(这与print不太一样)。
这是打印的示例:
>>> n = "foo\nbar" #just assigning a variable. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>
这是返回的示例:
>>> def getN():
... return "foo\nbar"
...
>>> getN() #When this isn't assigned to something, it is just output
'foo\nbar'
>>> n = getN() # assigning a variable to the return value. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>
只是添加到@Nathan Hughes的出色答案中:
该return
语句可以用作一种控制流。通过在一个return
函数的中间放置一个(或多个)语句,我们可以说:“停止执行此函数。我们要么得到了想要的东西,要么出了问题!”
这是一个例子:
>>> def make_3_characters_long(some_string):
... if len(some_string) == 3:
... return False
... if str(some_string) != some_string:
... return "Not a string!"
... if len(some_string) < 3:
... return ''.join(some_string,'x')[:,3]
... return some_string[:,3]
...
>>> threechars = make_3_characters_long('xyz')
>>> if threechars:
... print threechars
... else:
... print "threechars is already 3 characters long!"
...
threechars is already 3 characters long!
有关此使用方式的更多建议,请参见Python指南的代码样式部分return
。
在以下示例中也可以找到“返回”和“打印”之间的区别:
返回:
def bigger(a, b):
if a > b:
return a
elif a <b:
return b
else:
return a
上面的代码将为所有输入给出正确的结果。
打印:
def bigger(a, b):
if a > b:
print a
elif a <b:
print b
else:
print a
注意:这将在许多测试用例中失败。
错误:
----
FAILURE
: Test case input: 3, 8.
Expected result: 8
FAILURE
: Test case input: 4, 3.
Expected result: 4
FAILURE
: Test case input: 3, 3.
Expected result: 3
You passed 0 out of 3 test cases
这是我的理解。(希望它会帮助某人,这是正确的)。
def count_number_of(x):
count = 0
for item in x:
if item == "what_you_look_for":
count = count + 1
return count
因此,这段简单的代码计算了某事物的出现次数。回报的位置很重要。它告诉您的程序您在哪里需要价值。因此,在打印时,会将输出发送到屏幕。返回时,您告诉该值去某处。在这种情况下,您可以看到count = 0与return缩进-我们希望将值(count + 1)替换为0。如果在缩进return命令时尝试遵循代码的逻辑,则输出将始终为1 ,因为我们永远不会告诉初始计数发生变化。我希望我做对了。哦,返回总是在函数内部。
关于return
函数的最好的事情是您可以从函数返回值,但是您可以这样做,print
所以有什么区别?基本上return
不只是返回它就以对象形式提供输出,这样我们就可以将返回值从函数保存到任何变量,但是我们不能这样做,print
因为它与stdout/cout
in 相同C Programming
。
请遵循以下代码以更好地理解
def add(a, b):
print "ADDING %d + %d" % (a, b)
return a + b
def subtract(a, b):
print "SUBTRACTING %d - %d" % (a, b)
return a - b
def multiply(a, b):
print "MULTIPLYING %d * %d" % (a, b)
return a * b
def divide(a, b):
print "DIVIDING %d / %d" % (a, b)
return a / b
print "Let's do some math with just functions!"
age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)
print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)
# A puzzle for the extra credit, type it in anyway.
print "Here is a puzzle."
what = add(age, subtract(height, multiply(weight, divide(iq, 2))))
print "That becomes: ", what, "Can you do it by hand?"
我们现在正在针对add, subtract, multiply,
和进行自己的数学函数divide
。要注意的重要一点是我们说return a + b
(在add
)的最后一行。其作用如下:
a
和b
。a + b
。你可能会说这是“我补充a
和b
再归还。”a + b
结果分配给变量。return
应该用于递归函数/方法,或者您要将返回的值用于算法中的后续应用程序。
print
当您希望向用户显示有意义的期望输出,并且不想使用户不感兴趣的中间结果杂乱无章时,应使用,尽管它们有助于调试代码。
下面的代码展示了如何使用return
和print
正确:
def fact(x):
if x < 2:
return 1
return x * fact(x - 1)
print(fact(5))
这种解释对所有编程语言都是正确的,而不仅仅是python。