python没有return语句的函数将返回_关于python:函数不带return语句就返回None

我刚刚学习(正在学习)函数参数如何在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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值