Discuss / Python / 调试出现了个None,为何?

调试出现了个None,为何?

Topic source

class Student(object): def init(self, name, score): self.name = name self.score = score def print_score(self): print('%s: %s' % (self.name, self.score))

def get_grade(self):
    if self.score >= 90:
        return 'A'
    elif self.score >= 60:
        return 'B'
    else:
        return 'C'

bart = Student('Bart Simpson', 59) print(bart.print_score()) print(bart.get_grade())

运行.py文件后生成如下。 Bart Simpson: 59 None C

疑问 None从哪里来的???

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

没有return语句的函数默认返回None,你要仔细检查自己编写的函数

get_grade()这个方法有return语句,没有print语句,所以需要用print把get_grade()的返回值打印出来。 print_score()这个方法本身是有print语句,但没有return语句。你用bart.print_score()本来就会打印出Bart Simpson: 59。 但你却用print(bart.print_score())来打印数据,相当于是在原来print的基础上再print函数的返回值,因为print_score()没有return语句,所以默认返回值是None


  • 1

Reply