背景:Python初学者;搜索了这个问题但我找到的答案更多的是“什么”而不是“为什么”;
我打算做什么:创建一个功能,从用户输入测试分数输入,并根据年级比例/曲线输出字母等级;这是代码:
score = input("Please enter test score: ")
score = int(score)
def letter_grade(score):
if 90 <= score <= 100:
print ("A")
elif 80 <= score <= 89:
print ("B")
elif 70 <= score <= 79:
print("C")
elif 60 <= score <= 69:
print("D")
elif score < 60:
print("F")
print (letter_grade(score))
这在执行时返回:
Please enter test score: 45
F
None
None
不是故意的。而且我发现如果我使用(letter_grade(score)
而不是print (letter_grade(score))
,那么None
就不再出现了。
我能找到的最接近的答案说“像python中的函数返回None,除非明确指示不这样做”。但我确实在最后一行调用了一个函数,所以我在这里有点困惑。
所以我想我的问题是:是什么导致了None
的消失?我确信这是非常基本的东西,但我无法找到解释“幕后”机制的任何答案。所以,如果有人能对此有所了解,我将不胜感激。谢谢!
在python中,函数的默认返回值是None
。
>>> def func():pass
>>> print func() #print or print() prints the return Value
None
>>> func() #remove print and the returned value is not printed.
>>>
所以,只需使用:
letter_grade(score) #remove the print
另一种方法是用return
替换所有印刷品:
def letter_grade(score):
if 90 <= score <= 100:
return "A"
elif 80 <= score <= 89:
return "B"
elif 70 <= score <= 79:
return "C"
elif 60 <= score <= 69:
return "D"
elif score < 60:
return "F"
else:
#This is returned if all other conditions aren't satisfied
return "Invalid Marks"
现在使用print()
:
>>> print(letter_grade(91))
A
>>> print(letter_grade(45))
F
>>> print(letter_grade(75))
C
>>> print letter_grade(1000)
Invalid Marks
没有返回语句的函数称为void函数,函数返回None。要返回None以外的值,需要在函数中使用return语句。像None,True和False这样的值不是字符串:它们是python中保留的特殊值和关键字。如果我们到达任何函数的末尾并且我们没有显式执行任何return语句,Python将自动返回值None。为了更好地理解,请参阅以下示例。这里stark没有返回任何东西,所以输出将是None
def stark(): pass
a = stark()
print a
上面代码的输出是:
None
这是我的理解。如果没有返回值,函数将向控制台返回“none”。由于print不是值,如果您使用print()作为您希望函数执行的唯一操作,则在打印语句之后,“none”将返回到控制台。因此,如果函数需要一个值,并且您希望字符串返回该值...
给你的返回语句一个像这样的字符串的值...这是一个非常基本的例子:
def welcome():
return str('Welcome to the maze!')
然后打印您想要的功能:
print(welcome()):
结果是:
欢迎来到迷宫!