【问题标题】:Mysterious nonetype appearing [duplicate]出现神秘的非类型[重复]
【发布时间】:2018-10-22 14:56:31
【问题描述】:

python 3.7

你好。
我知道None 是没有返回任何内容的结果,但是我不明白为什么在这段代码的末尾会返回None。我看不到任何未完成的东西。

def test(a, b):
    if a == True and b == True:
        return False
    elif a == True or b == True:
        return True
    elif a == False and b == False:
        return False
    else:
        print("error... :(")

print(test(True, True))
print(test(True, False))
print(test(False, True))
print(test(False, False))
print(test(None, False))

当我运行这段代码时,我得到:

False
True
True
False
error... :(
None

我还尝试更改 else: 语句以实际返回打印的对象,希望我的代码只是要求冗余返回,但输出是相同的。

    else:
        error = print("error... :(")
    return error

谁能阐明None 的来源?

【问题讨论】:

  • 如果您到达函数的末尾而没有点击return,那么您的函数将返回None。此外,print 返回None。因此,在这两个版本中,您的函数在特定情况下都会返回 None。如果您希望它返回不同的内容,请弄清楚是什么并return 它。
  • 最终的else 不返回任何内容,因此返回None
  • 谢谢迈克·斯科蒂。我确信以前有人问过这个问题,但找不到。对不起加倍:)

标签: python function nonetype


【解决方案1】:

您的 else 语句打印出“错误... :(”行,​​但是您也尝试打印出函数的结果。要么让函数处理打印并且不返回任何内容(从主体中删除打印语句),或者让函数返回您要打印的字符串,而不是从函数中打印它(见下文)。

def test(a, b):
if a == True and b == True:
    return False
elif a == True or b == True:
    return True
elif a == False and b == False:
    return False
else:
    return "error... :("

print(test(True, True))
print(test(True, False))
print(test(False, True))
print(test(False, False))
print(test(None, False))

【讨论】:

  • 谢谢。这很有道理。
  • 如果此解决方案有效,请确保接受它作为答案!
  • 感谢您的提示。对这个社区非常陌生,我感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 2017-02-02
  • 2023-03-21
  • 2021-11-09
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
相关资源
最近更新 更多