【问题标题】:Why do I get 'None' as the output from a print statement?为什么我得到“无”作为打印语句的输出?
【发布时间】:2019-02-10 19:30:27
【问题描述】:
def print_name(name):
    print(name)

print(print_name('Annabel Lee'))

为什么我会得到以下输出:

Annabel Lee
None

更准确地说,None 这个词是从哪里来的?

【问题讨论】:

  • 函数print_name返回None,因为没有指定返回值。您在最终的打印语句中打印返回值。
  • None 不是输出;这是返回值。这两个概念完全不同。令人困惑的是,交互式解释器在评估函数调用时会将其返回值打印到标准输出。

标签: python python-3.x function syntax nonetype


【解决方案1】:

因为你是打印方法print,所以返回应该是名称,而不是print(name)

【讨论】:

    【解决方案2】:

    您有两个对print 的调用:一个在print_name 内部,另一个在函数范围之外。

    print_name() 内部的那个打印传入的name。外面的那个打印函数print_name 返回的内容——这是None,因为你没有return 语句。假设您只想要一个打印输出,您将 return 它而不是在函数中打印它:

    def print_name(name):
        return name
    
    print(print_name('Annabel Lee'))
    

    或者直接调用 print_name 而不将其包装在 print 函数中。

    【讨论】:

      【解决方案3】:

      您的函数会打印名称,您无需再次使用print()

      def print_name(name):
          print(name)
      
      print_name('Annabel Lee')
      

      如果不在函数中使用return,则默认返回None。如果你的函数是这样的,你的代码是正确的:

      def print_name(name):
          return name
      
      print(print_name('Annabel Lee'))
      

      【讨论】:

        【解决方案4】:

        print() 函数计算括号中的参数并打印结果。 print(1+1) 将打印“2”,因为 1+1 的结果是 2。就像这样,print("abcd".upper()) 将打印“ABCD”。

        当您调用print(print_name('Annabel Lee')) 时,打印函数会尝试计算参数,在本例中为print_name('Annabel Lee')。由于print_name() 函数不返回任何值(它只是打印'Annabel Lee'),因此返回值为None。这就是print() 函数打印“无”的原因。

        【讨论】:

          【解决方案5】:

          你的函数没有返回任何东西,这就是它给出 None 的原因。 一个非返回函数返回 None。

          【讨论】:

            猜你喜欢
            • 2021-08-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-08-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多