python从函数差异返回的两种方法

python从函数差异返回的两种方法,python,return,Python,Return,我想知道以下功能是否有任何相关差异: def function1(n): if n%2 == 0: return n else: return "Number " +str(n)+ " is odd." 及 在一些在线课程中,我注意到,在一个任务中(比上面打印的代码复杂得多,但我只简单地显示了一个概念),自动评分向我返回了一个错误,当我使用function1中的设计时,函数无法正常退出,而当我改为function2中的设计时,我得到了满分。我真的

我想知道以下功能是否有任何相关差异:

def function1(n):
    if n%2 == 0:
        return n
    else:
        return "Number " +str(n)+ " is odd."


在一些在线课程中,我注意到,在一个任务中(比上面打印的代码复杂得多,但我只简单地显示了一个概念),自动评分向我返回了一个错误,当我使用function1中的设计时,函数无法正常退出,而当我改为function2中的设计时,我得到了满分。我真的很感兴趣为什么我不能使用function1作为正确的设计,也许比我经验丰富的人会解释一下,并用简短的解释来显示正确。

如果执行else,您的第二个函数将返回
None
,在第一个函数中,它将返回
“Number”+str(n)+“is奇数”的值。

因此,如果需要使用
“Number”+str(n)+“中的值是奇数。”
如果达到else,您将无法使用,您将只能看到打印的值

In [9]: x = function1(11)

In [10]: print x
Number 11 is odd.

In [11]: x = function2(11)
Number 11 is odd.

In [12]: print x
None
在您的课程中,评分器很可能没有使用
print
调用函数,因此要查看输出,您必须
print function1(11)
,使用任何
ide
都是一样的,例如pycharm等等,当您刚刚返回时调用函数不会显示返回值


在没有看到更复杂的代码的情况下,有太多的可能性,但打印的一个特定部分是,函数将返回
None
,这可能是代码终止时在其他地方需要的值

我知道这一点,但我不知道为什么它是课程中首选的解决方案。对我来说,更自然的是第一个功能设计。第一个设计更好。如果分级器更喜欢第二种,那么它会有一些奇怪的事情发生。@Kevin,是的,第一种设计是我纠正它的唯一方法,但是很明显,无论代码分级如何,输出都必须打印出来。这将不是我见过的唯一一个使用奇怪技术的在线评分器。可能函数的输出在其他地方使用过,并且在(未知)上下文中不返回字符串是可取的。在这种情况下,首选功能2。
In [9]: x = function1(11)

In [10]: print x
Number 11 is odd.

In [11]: x = function2(11)
Number 11 is odd.

In [12]: print x
None