提问人:Grant 提问时间:8/14/2011 最后编辑:wjandreaGrant 更新时间:9/29/2022 访问量:80830
为什么在我的函数输出后打印“None”?
Why is "None" printed after my function's output?
问:
我尝试编写以下代码:
def smaller(x, y):
if x > y:
print(y)
else:
print(x)
print(smaller(2, 3))
我得到了这个结果:
>>>
2
None
从哪里来?这是什么意思?None
另请参阅
公认的答案解释了从函数返回
值而不是打印
值的重要性。有关详细信息,请参阅返回语句的用途是什么?它与打印有何不同?
若要了解 None
结果本身,请参阅什么是“NoneType”对象?。
如果要在函数内部打印以查看多个值,则最好改为收集这些值,以便调用代码可以打印
它们。有关详细信息,请参阅如何使用“return”从循环中取回多个值?我可以把它们放在一个列表中吗?
答:
问题是你写的.您将返回值传递给函数。 本身打印 或 ,这就是您看到 2 的原因。但是,在语句本身执行时没有参数。print jiskya(2,3)
jiskya
print
jiskya
x
y
print
print jiskya(2, 3)
对于解释者来说,这是对所发生情况的简化:
print jiskya(2,3)
>> Executing jiskya with arguments 2, 3
>> jiskya evaulates `print x`
>> 2 is printed
>> Function jiskya exits with no return value
print None
>> None is printed
它是函数的返回值,您可以打印出来。如果没有 return 语句(或只是没有参数的返回
),则会在函数的末尾添加一个隐式语句。return None
您可能希望在函数中返回值,而不是打印它们:
def jiskya(x, y):
if x > y:
return y
else:
return x
print(jiskya(2, 3))
评论
return None
return None
None
return None
return
return
return
None
None
您正在执行两次打印,第一次在函数的语料库中,第二次打印函数的结果,实际上是 None。
你应该做这样的事情:
def yourfunction(x, y):
if x > y:
return y
else:
return x
然后
>>> print yourfunction(2, 3)
2
“无”从何而来?
函数。
它是什么?
这是函数返回的内容。
在 Python 中,每个函数都会返回一些东西。它可以使用元组“是多个东西”,也可以使用“什么都不是”,但它必须返回一些东西。这就是我们处理无法指定返回类型这一事实的方式(这没有意义,因为您没有为其他任何内容指定类型)。当解释为用于打印的字符串时,将替换为字符串“None”。None
None
None
是一个特殊的对象,应该代表任何真实事物的不存在。它的类型是(它是该类的实例)。每当您不显式返回任何内容时,您都会隐式返回 None。NoneType
您编写的函数是为了打印两个值之一或 ,但不返回任何内容。所以被退回了。然后,您让 Python 打印调用函数的结果。因此,它调用了函数(打印其中一个值),然后打印了返回值,即 ,作为文本“None”。x
y
None
None
是的,基本上你在函数中使用 print 语句作为返回信息的一种方式。你不应该这样做。Print 与 return 语句不同。如果你只是想让你的函数给出你的答案而不用 none,只需键入 jiskya(2, 3) 即可。您将看到该函数抛出的内容,因为该函数中有 print 语句。相反,如果你在函数中键入了“return”,那么在函数调用之前没有“print”,它就不会给你任何东西。
好的,当你这样做时开始:
print(jiskya(2, 3))
你得到的东西几乎等于这个:
print(print(2))
那么,这是怎么回事呢?打印出 2,并返回由外部调用打印的 2。足够简单。print(2)
None
现在看看这个:
def hello():
return 2
如果这样做:
print(hello())
你得到 2,因为如果你打印出一个函数,你会得到任何值。(该值由 表示。return
return
return someVariable
现在,尽管不像大多数函数那样有括号,但它在这方面是一个有点特殊的函数。打印返回什么?无。所以当你 时,你会得到第二部分,因为 print 的返回值是 。print
print print someVariable
None
None
正如其他人所说:
def jiskya(x, y):
if x > y:
print(y)
else:
print(x)
应该重写:
def jiskya(x, y):
if x > y:
return y
else:
return x
评论
请看以下示例:
不带 return 语句的函数
Print() 函数类型为 none 类型。.
def test1():
print("code...!!!")
type(test1())
Output: code...!!!
NoneType
带有 return 语句的函数
返回包含 print() 函数的变量 'a',这就是为什么 type() 返回打印函数的数据类型,即 NoneType,而不是打印函数内的数据类型:
def test1():
a= print("code...!!!")
return a
type(test1())
Output: code...!!!
NoneType
这里函数返回变量“a”的数据类型,其中包含一个字符串。
def test1():
a = "First code...!!!"
return a
type(test1())
Output: str
下一个:使用函数更改指针包含的地址
评论