【发布时间】: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 提供)涵盖了这一点?