Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 返回函数的输出与打印函数的输出有何不同?_Python_Return - Fatal编程技术网

Python 返回函数的输出与打印函数的输出有何不同?

Python 返回函数的输出与打印函数的输出有何不同?,python,return,Python,Return,在我之前的文章中,安德鲁·谢菲写道: 除了所有其他提示和技巧之外,我认为您还缺少一些关键的东西:您的函数实际上需要返回一些东西。 当您创建autoparts()或splittext()时,我们的想法是这将是一个您可以调用的函数,它可以(并且应该)返回一些东西。 一旦计算出希望函数具有的输出,就需要将其放入return语句中 此函数创建字典,但不返回任何内容。但是,由于我添加了打印,因此在运行函数时会显示函数的输出。returning某物和printing某物之间有什么区别?您只需添加一条retu

在我之前的文章中,安德鲁·谢菲写道:

除了所有其他提示和技巧之外,我认为您还缺少一些关键的东西:您的函数实际上需要返回一些东西。 当您创建
autoparts()
splittext()
时,我们的想法是这将是一个您可以调用的函数,它可以(并且应该)返回一些东西。 一旦计算出希望函数具有的输出,就需要将其放入
return
语句中


此函数创建字典,但不返回任何内容。但是,由于我添加了
打印
,因此在运行函数时会显示函数的输出。
return
ing某物和
print
ing某物之间有什么区别?

您只需添加一条return语句

def autoparts():
  parts_dict={}
  list_of_parts = open('list_of_parts.txt', 'r')
  for line in list_of_parts:
        k, v = line.split()
        parts_dict[k] = v
  return parts_dict
打印输出仅打印到应用程序的标准输出(屏幕)。还可以通过使用逗号分隔返回多个内容:

return parts_dict, list_of_parts
要使用它:

test_dict = {}
test_dict = autoparts()

print
只需将结构打印到输出设备(通常是控制台)。没别的了。要从函数中返回它,请执行以下操作:

def autoparts():
  parts_dict = {}
  list_of_parts = open('list_of_parts.txt', 'r')
  for line in list_of_parts:
        k, v = line.split()
        parts_dict[k] = v
  return parts_dict
为什么要回来?如果不这样做,则该字典将死亡(被垃圾收集),并且在该函数调用结束时不再可访问。如果返回该值,则可以使用它执行其他操作。例如:

my_auto_parts = autoparts() 
print(my_auto_parts['engine']) 
看看发生了什么<调用了code>autoparts(),它返回了
parts\u dict
,我们将其存储到
my\u auto\u parts
变量中。现在,我们可以使用这个变量访问dictionary对象,即使函数调用结束,它仍然有效。然后,我们用键
“engine”
打印出字典中的对象


要获得好的教程,请查看。它是免费的,而且很容易理解。

打印语句将向用户输出一个对象。函数完成后,return语句将允许将字典分配给变量

或者在返回词典的上下文中:

>>> def foo():
...     print {'a' : 1, 'b' : 2}
... 
>>> a = foo()
{'a': 1, 'b': 2}
>>> a
>>> def foo():
...     return {'a' : 1, 'b' : 2}
... 
>>> a = foo()
>>> a
{'a': 1, 'b': 2}

(执行一行后不输出任何内容的语句意味着最后一条语句没有返回任何内容)

我认为您感到困惑,因为您是从REPL运行的,它会自动打印出调用函数时返回的值。在这种情况下,无论是创建值、打印值并将其丢弃的函数,还是创建值并返回值并让REPL打印的函数,都会得到相同的输出

然而,这些都不是同一件事,当你用另一个函数调用autoparts时,你会意识到这一点,这个函数想要用autoparts创建的值做一些事情

def add(x, y):
    return x+y
这样它就可以变成一个变量

sum = add(3, 5)

print(sum)

但如果“添加”功能打印输出“总和”,则输出“总和”将为“无”,因为在分配后操作已经发生。

主要区别:

调用print将立即使程序写出文本供您查看。如果要向用户显示值,请使用“打印”

return是一个关键字。当到达return语句时,Python将停止当前函数的执行,并向调用函数的位置发送一个值。如果要将值从代码中的一点发送到另一点,请使用return


使用return更改程序的流程。使用print不会。

函数在基本级别上是一个代码块,可以在调用时执行,而不是在编写时执行。假设我有一段代码,这是一个简单的乘法函数:

def multiply(x,y):
    return x * y
因此,如果我用
乘法(2,3)
调用函数,它将返回值6。如果我修改了函数,使其看起来像这样:

def multiply(x,y):
    print(x*y)
    return x*y
…然后输出如您所期望的,数字6已打印。然而,这两条语句之间的区别在于,
print
仅在控制台上显示某些内容,而
return
将某些内容“返回”给任何调用它的对象,这通常是一个变量。然后,在该变量调用的函数中为该变量分配return语句的值。以下是python shell中的一个示例:

>>> def multiply(x,y):
        return x*y

>>> multiply(2,3) #no variable assignment
6
>>> answer = multiply(2,3) #answer = whatever the function returns
>>> answer
6
现在函数返回了调用函数的结果到调用它的地方,在本例中是一个名为“answer”的变量

这不仅仅是简单地打印结果,因为您可以再次访问它。下面是使用返回语句的函数示例:

>>> x = int(input("Enter a number: "))
Enter a number: 5
>>> y = int(input("Enter another number: "))
Enter another number: 6
>>> answer = multiply(x,y)
>>> print("Your answer is {}".format(answer)
Your answer is 30

因此,它基本上将调用函数的结果存储在变量中。

不幸的是,存在字符限制,因此这将在许多部分中进行。首先要注意的是,return和print是语句,不是函数,但这只是语义

sum = add(3, 5)

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

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

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

def function_that_prints():
    print "I printed"

def function_that_returns():
    return "I returned"

f1 = function_that_prints()
f2 = function_that_returns()
打印“现在让我们看看f1和f2的值是什么”

打印f1--->无

印刷品
def function_that_prints():
    print "I printed"

def function_that_returns():
    return "I returned"

f1 = function_that_prints()
f2 = function_that_returns()
def add_nums1(x,y):
    print(x+y)

def add_nums2(x,y):
    return x+y 

#----Function output is usable for further processing
add_nums2(10,20)/2
15.0

#----Function output can't be used further (gives TypeError)
add_nums1(10,20)/2

30
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-124-e11302d7195e> in <module>
----> 1 add_nums1(10,20)/2

TypeError: unsupported operand type(s) for /: 'NoneType' and 'int'