我刚刚学习(正在学习)函数参数如何在Python中工作,并且在没有明显原因的情况下,我开始尝试使用它:
1
2
3
4
5
6
7def jiskya(x, y):
if x > y:
print y
else:
print x
print(jiskya(2, 3))
给出了输出:
1
2
3>>>
2
None
None来自哪里? 还有,这是什么?
它是函数的返回值,您可以将其打印出来。如果没有return语句(或者只是没有参数的return),则将隐式return None添加到函数的末尾。
您可能想返回函数中的值,而不是打印它们:
1
2
3
4
5
6
7def jiskya(x, y):
if x > y:
return y
else:
return x
print(jiskya(2, 3))
有没有指定"添加隐式return None"的地方?
@MichaWiedenmann我在Python参考中找不到能达到这种效果的任何语句,但这是在cpython中添加return None的注释(和代码)。
好的,开始时要这样做:
1print(jiskya(2, 3))
您得到的东西几乎与此等效:
1print(print(2))
那么发生了什么? print(2)正在打印输出2,并返回None,该值由外部调用打印。直截了当。
现在来看这个:
1
2def hello():
return 2
如果您这样做:
1print(hello())
之所以得到2,是因为如果您打印出一个函数,则无论得到什么return值。 (return值由return someVariable表示。
现在,即使print像大多数函数一样都没有括号,但在这方面它只是一个特殊的函数。打印返回什么?没有。因此,当您print print someVariable时,您将得到None作为第二部分,因为print的返回值为None。
正如其他人所说:
1
2
3
4
5def jiskya(x, y):
if x > y:
print(y)
else:
print(x)
应该改写为:
1
2
3
4
5def jiskya(x, y):
if x > y:
return y
else:
return x
如果print参数处于while循环中怎么办? 如果将" print"替换为" return",则只能打印一个值,而不是完整的迭代。
Where did the 'None' come from?
功能。
And what is it?
这就是函数返回的内容。
在Python中,每个函数都会返回一些信息。使用元组可以"是多件事",或者使用None它可以"什么都不是",但是它必须返回一些东西。这就是我们如何处理无法指定返回类型的事实(这没有意义,因为您没有为其他任何东西指定类型)。当解释为打印字符串时,None将替换为字符串" None"。
None是一个特殊的对象,应该表示没有任何真实的事物。它的类型是NoneType(它是该类的一个实例)。只要您不显式返回任何内容,就隐式返回None。
您编写了该函数以打印两个值x或y之一,但不返回任何值。因此,返回了None。然后,您要求Python打印调用该函数的结果。因此它调用了该函数(打印值之一),然后将返回值None打印为文本" None"。
是的,基本上,您在函数中使用print语句作为返回信息的方式。你不应该这样做。打印与return语句不同。如果您只是想让函数给出没有答案的答案,只需键入jiskya(2,3)即可。您将看到该函数抛出的结果,因为该函数中有print语句。相反,如果您在函数中键入" return",那么在函数调用之前没有" print"将不会给您任何东西。
您要进行两次打印,第一个打印在函数语料库中,第二个打印在打印函数的结果,实际上是"无"。
您应该这样做:
1
2
3
4
5def yourfunction(x, y):
if x > y:
return y
else:
return x
然后,
1
2>>> print yourfunction(2, 3)
2
问题是您写了print jiskya(2,3)。您要将jiskya的返回值传递给print函数。 jiskya本身会打印x或y,这就是为什么看到2的原因。但是print jiskya(2, 3)语句中的print本身不会执行任何参数。
对于解释器,这是发生的事情的简化:
1
2
3
4
5
6
7print 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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/11932.html