Python 函数不返回任何内容,只返回预期值;无”;

Python 函数不返回任何内容,只返回预期值;无”;,python,function,return,Python,Function,Return,我的函数没有返回值,所以我认为它应该返回“None”。相反,它根本不返回任何内容。有人能告诉我为什么吗?感谢大家的帮助 def posdivisor(n): for i in range(1,n+1): if n % i == 0: print(i) someValue = eval(input("Enter an integer: ")) posdivisor(someValue) SHELL报告: Enter an integer: 49

我的函数没有返回值,所以我认为它应该返回“None”。相反,它根本不返回任何内容。有人能告诉我为什么吗?感谢大家的帮助

def posdivisor(n):
    for i in range(1,n+1):
        if n % i == 0:
            print(i)

someValue = eval(input("Enter an integer: "))

posdivisor(someValue)
SHELL报告:

Enter an integer: 49
1
7
49

由于您的代码只是打印数据,因此函数返回一个
None
,如果您忽略它,尝试打印输出时将看到None:

def posdivisor(n):
    for i in range(1,n+1):
        if n % i == 0:
            print(i)

someValue = eval(input("Enter an integer: "))

result = posdivisor(someValue)
print result
此外,这里不需要
eval()
,只要
input()
就可以了,只要您能确保输入总是数字:

def posdivisor(n):
    for i in range(1,n+1):
        if n % i == 0:
            print(i)

someValue = input("Enter an integer: ")

result = posdivisor(someValue)
print result

当以交互方式评估内容时,python提示符将自动吞下
None

>>> def foo(): return None
>>> foo()
>>> None
>>> repr(None)
'None'

您看到的是在控制台中执行的打印。您是在交互式shell中执行此操作的吗?如果返回
None
,则shell不显示任何内容。如果您使用
posdivisior(someValue)
您应该会看到打印的“None”。使用
eval
这种方式是有害的。改用
int
!我在文件中编写代码,然后打印到shell。我认为如果应该的话,shell会打印“None”,因为如果我将代码中的最后一行更改为“print(posdivisor(someValue)),那么shell会打印“None”。