2014-01-31 155 views
2

我很简单的python函数返回“无”在它的结束,我不知道为什么相当。我看了一些其他帖子,仍然无法弄清楚。 任何帮助表示赞赏。Python函数返回无

这里是我的代码:

def printmult(n): 
    i = 1 
    while i <= 10: 
     print (n * i, end = ' ') 
     i += 1 

print(printmult(30)) 
+4

因为你不会返回任何东西。 – BrenBarn

+3

让我猜猜,你是一个Ruby程序员,你已经习惯了在方法返回的最后一条语句(不使用'return'关键字);) – alfasin

+0

作为BrenBarn说,你不返回任何值,所以函数返回'None',为了解决你的代码问题,你需要用'printmult(30)'替换最后一行。 – 2014-01-31 03:37:19

回答

2

你是不是在功能printmult返回任何东西,因此,当您打印结果printmult(30)这将是None(这是默认值时传回的功能不会显式返回任何东西)。

因为你的方法有print声明内,它不应该返回的东西(通常当一个方法名是一样的东西printSomething(),它不返回任何东西),你应该叫它为:

printmult(30) 

print(printmult(30)) 
2

因为在Python中,每一个函数返回一个值,而None是,如果你不明确指定别的什么返回。

你究竟做了什么预计print(printmult(30))要做什么?你已经要求它评估printmult(30),然后print无论结果如何。 东西必须由它产生,对吧?或者你是否期待某种异常会被提出?

请确定您知道打印和退货不是同一件东西

2

其他答案在指出错误的位置方面做得很好,即您需要了解打印和返回不一样。如果你希望你的函数返回一个值,然后可以在可变印刷或商店,你想是这样的:

def returnmult(n): 
    i = 1 
    result_string = '' 
    while i <= 10: 
     result_string += str(n * i) + ' ' 
     i += 1 
    return result_string 

print(returnmult(30)) 
0

我从红宝石之际,以及和它起初似乎很奇怪。

如果你print东西有一个print声明,它返回的最后一件事是None

如果你只是返回的值,然后调用print上的函数它不会输出None

希望这会有所帮助:)