【问题标题】:What is the difference between 'print' and 'return'?“打印”和“返回”有什么区别?
【发布时间】:2016-06-28 02:11:50
【问题描述】:

首先,我只是一个初学者,所以请原谅我。 我有一个问题问“定义一个名为 avg 的函数。它要求用户输入三个数字并打印他们的平均值。” 然后是另一个问题,询问“定义一个名为 avg4 的函数。它要求用户输入四个数字并返回四个数字的平均值”

我想知道这是否是一个技巧问题?因为据我了解,“打印”在控制台中打印输出,而“返回”是函数的一部分,实际上在控制台中没有任何输出。

这是我第一个问题的代码,第二个问题有什么不同? (除了四个数字而不是三个)

def avg(a, b, c):
    sum = (a+b+c)/3
    return sum

a1 = avg(float(input("First number: ")), float(input("Second number: ")), float(input("Third number: ")))

【问题讨论】:

  • 这两个词互换使用是很常见的,只是为了避免在写作业时使用同一个词。从上下文来看,正如您提到的那样,鉴于没有功能上下文,“返回”将与“打印”相同。此外,您应该编辑您的问题,因为您的代码编写不正确。

标签: python printing return


【解决方案1】:

我不知道这是一个诡计,是一个措辞不当的问题,还是作者准确地描述了需要什么......但你应该坚持字面描述并按照它的要求去做。 avg 应该打印平均值并返回 Noneavg4 应该返回平均值。如果以后有任何争议(“不要照我说的做,做我想做的”),您可以正确地声称您按照要求做了。

在高风险的工作环境中,您会返回并得到澄清,因此与给您分配任务的人交谈也是合理的。

def avg():
    """Ask the user for three numbers and print the average"""
    numbers = []
    for i in range(1, 4):
        numbers.append(float(input('Number {}: '.format(i))))
    print('Average', sum(numbers)/3)

def avg4():
    """Ask the user for 4 numbers and return the average"""
    numbers = []
    for i in range(1, 5):
        numbers.append(float(input('Number {}: '.format(i))))
    return sum(numbers)/4)

【讨论】:

    【解决方案2】:

    任何函数 a 返回一个值 - 然后您可以将其分配给名称 y 或传递给另一个函数 b,例如 y = a(x)z = b(a(x))

    在函数定义中可以有任意数量的return 语句:当函数被调用时,语句会一直执行,直到遇到任何return something 语句,然后返回对something 的引用;并且后面的任何语句都会被忽略。

    事实上,如果你没有显式键入return 语句,那么None 将在函数末尾隐式返回。

    print 语句不会干扰其中的任何内容。它只是打印你告诉它的内容,然后代码继续执行。 打印的值不必是从函数返回的值。这是一个很大的不同。

    【讨论】:

    • 好的,谢谢,所以如果我被要求给print 一个声明,他们想要在屏幕上显示一些输出,但是如果他们让我给return 一个声明,他们只是要我定义一个函数但屏幕上没有任何输出吗?
    • 是的,我在它的末尾有print(a1),但有人编辑了我的问题并出于某种原因将其删除。
    • 在第一种情况下,您的函数可以打印而不返回(嗯,正如我所说,它将隐式返回 None),或者不打印返回。
    • @timgeb - 你编辑了很多写得不好的东西:但有一点我是故意这样写的,你编辑错误;) ...:你没有得到 something 的值返回,但是它上面有一个指针(是的,这可能会有所不同,如果来自更高范围的可变变量被传递给函数然后被返回,则更改结果将对原始源产生影响)。我错了吗?
    • @Ilja 你是对的,“对某物的引用”会更准确。
    【解决方案3】:

    差异可能是细微的,但如果您将单词的词根理解为根本意义,那将是根本的差异。

    Return 通常与函数相关联(尽管不一定!)。函数可能返回一个值,特别是如果您将函数视为经典的机器类比函数,该机器接受某物并吐出产品。所以基本上你会说x returnsx 是一个函数或一些类似的结构时。

    Print 有一个更粗略的含义,一般来说,就是在屏幕上显示一些东西。你可以打印一些东西而不是一个函数的返回,或者你可以完全在一个函数之外打印。这里的想法是打印可以被视为一种特定类型的回报,而不是同义词。

    阅读更多关于returningprinting的信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-09
      • 2022-10-18
      • 2011-12-24
      • 2011-12-01
      • 2012-03-22
      • 2011-09-29
      • 1970-01-01
      相关资源
      最近更新 更多