你为什么要在Python中使用return语句?
什么是return语句的简单基本解释,如何在Python中使用它?
它和print
语句有什么区别?
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
你可以看到,当从bar()
调用foo()
时,1不会被写入控制台。 而是用来计算从bar()
返回的值。
print()
是一个导致副作用的函数(它在控制台中写入一个字符串),但是执行继续下一个语句。 return
导致函数停止执行,并将值返回给调用它的任何值。
我认为字典是你最好的参考
退货和打印
简而言之:
返回 返回或回复函数的调用者,而打印 产生文本
把print语句看作是一个副作用 ,它会使你的函数向用户写出一些文本,但不能被另一个函数使用。
我会试着用一些例子来解释一下,还有一些来自维基百科的定义。
这里是来自维基百科的一个函数的定义
数学中的一个函数将函数的参数(也称为输入)与另一个量(函数的值也称为输出)相关联。
想想那一秒钟。 当你说这个函数有一个值时,这意味着什么?
这意味着你可以用一个正常的值代替一个函数的值! (假设这两个值是相同类型的值)
你为什么要这么问?
那么其他函数可以接受与输入相同类型的值呢?
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
对于只依赖于他们的输入来产生他们的输出的函数有一个奇特的数学术语:参照透明度。 再次,维基百科的定义。
参照透明度和参照不透明度是计算机程序部分的特性。 如果表达式被替换为其值而不改变程序的行为,则该表达式被认为是透明的
如果你刚刚接触编程,可能有点难以理解这意味着什么,但是我认为在经过一些实验之后你会得到它。 一般来说,你可以做一些事情,比如打印一个函数,最后还可以有一个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命令的意思。
return
手段,“从这个功能输出这个值”。
print
方式,“发送这个值(通常)标准输出”
在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 >>>
这是一个返回的例子:
>>> 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.
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是带有返回值的缩进值 – 我们希望值(count + 1)替换为0.如果在进一步缩进返回命令时尝试遵循代码的逻辑,则输出始终为1 ,因为我们永远不会告诉最初的计数改变。 我希望我说得对。 哦,并且返回总是在一个函数里面。
上面没有讨论的情况。
return语句允许您在达到结束之前终止函数的执行。执行流将立即返回给调用者。
在第9行中:
def ret(n): if n > 9: temp = "two digits" return temp #Line 4 else : temp = "one digit" return temp #Line 8 return #Line 9 print ("return statement") ret(10)
条件语句执行后,函数ret()因返回而终止(第9行)。 因此print(“return语句”)不会被执行。
output : two digits
这个返回语句之后出现的代码或者控制流程没有到达的地方是死代码 。
返回值
在第4行和第8行中,返回语句用于在条件执行后返回临时变量的值。
为了显示打印和退货之间的区别:
def ret(n): if n > 9: print("two digits") return "two digits" else : print("one digit") return "one digit" return ret(25) output : two digits 'two digits'
return
是函数定义的一部分,而print
输出文本到标准输出(通常是控制台)。
函数是接受参数并返回值的过程。 return
是为后者,而前者是用def
完成的。
例:
def timestwo(x): return x*2
return
应该用于递归函数/方法,或者您希望为算法中的后续应用程序使用返回的值。
当你想向用户显示一个有意义的和期望的输出时,你应该使用print
,你不想让用户不感兴趣的中间结果弄乱屏幕,尽管它们对调试代码很有帮助。
以下代码显示如何正确使用return
和print
:
def fact(x): if x < 2: return 1 return x * fact(x - 1) print(fact(5))
对于所有的编程语言,这个解释都是正确的,而不仅仅是python 。
关于return
函数最好的事情是你可以从函数返回一个值,但你可以做与print
相同,所以有什么区别? 基本上不return
只是返回它给对象形式的输出,以便我们可以将函数的返回值保存到任何变量,但我们不能print
因为它与C Programming
stdout/cout
相同。
请按照以下代码进行更好的理解
码
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
。 重要的是要注意的是我们说的最后一行返回a + b
(在add
)。 这是做什么的如下:
- 我们的函数有两个参数:
a
和b
。 - 我们打印出我们的功能在做什么,在这种情况下,“添加”。
- 然后我们告诉Python做一些倒退:我们返回
a + b
的加法。 你可能会这样说,“我加a
和b
然后返回它们”。 - Python添加了这两个数字。 然后当函数结束时,任何运行它的行都可以将这个
a + b
结果赋值给一个变量。