【问题标题】:Extra "None" as output in python [duplicate]额外的“无”作为python中的输出[重复]
【发布时间】:2018-07-25 01:10:38
【问题描述】:
class student:
    birth_day = 21 
    birth_month = 4 
    birth_year = 1998 
    def __init__(self,name):
        self.naav = name 
    def SayHi(self):
        return print('hello'+''+self.naav)


Topper = student('vikas')
print(Topper.naav) 
print(Topper.SayHi())
print(student.birth_day)  
print(Topper.birth_day)  
#print(student.naav)

这个的输出是

vikas
hellovikas
None
21
21

我对第三个输出“无”感到困惑,不知道它是如何工作的,有人帮助我理解

【问题讨论】:

  • print 函数总是返回 None。你可以return 'hello' + self.naav,也可以print('hello' + self.naav),但不能同时拥有。如果您return print('hello' + self.naav),那么print 函数仍将被调用并打印到您的IDE 或命令shell,但它会返回None,因为print 函数返回None
  • 没错,但如果你删除了return 而只删除了print('hello'+''+self.naav),函数仍然会返回None,因为这是返回的默认值通过任何没有return 语句的函数。所以真正的问题是你不应该打电话给print(Topper.SayHi())。 (您想要打印什么?)
  • 标记的副本通常解释了当函数返回 None 并且您尝试 print 或以其他方式显示它时会发生什么。我很确定还有另一个关于print 本身返回None 的好重复,我们可能也应该添加它,但我找不到它......
  • 但也许关于那个 dup 的第二个答案(由 Dair 提供)涵盖了这一点?

标签: python class oop


【解决方案1】:

发生这种情况是因为在print(Topper.SayHi()) 上,您正在打印函数SayHi 返回的内容,这没什么(None)。 这是因为print('hello'+''+self.naav) 不返回值,它打印并且什么也不返回。

您应该只返回字符串,然后打印函数 SayHi 的返回值(正如您已经在做的那样)。

class student:
    ... 
    def SayHi(self):
        return 'hello' + self.naav

...
print(Topper.SayHi())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-28
    • 2018-12-11
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2016-03-13
    相关资源
    最近更新 更多