我刚刚学习(正在学习)函数参数在Python中是如何工作的,我开始尝试使用它时没有明显的原因,当时:
def jiskya(x, y):
if x > y:
print y
else:
print x
print(jiskya(2, 3))
给出了输出:
>>>
2
None
None
来自哪里?它是什么?
答案 0 :(得分:44)
这是您打印出来的函数的返回值。如果没有return语句(或just a return
without an argument),则会在函数末尾添加隐式return None
。
您可能希望返回函数中的值而不是打印它们:
def jiskya(x, y):
if x > y:
return y
else:
return x
print(jiskya(2, 3))
答案 1 :(得分:9)
好的,当你这样做时开始:
print(jiskya(2, 3))
你得到了与此相当的东西:
print(print(2))
那么,发生了什么? print(2)
打印出2,并返回外部调用打印的None
。直截了当。
现在看看:
def hello():
return 2
如果你这样做:
print(hello())
你得到2,因为如果你打印出一个函数,你会得到return
值。 (return
值由return someVariable
表示。
现在即使print
没有像大多数函数一样的括号,但在这方面它只是一个特殊功能。什么打印返回?没有。因此,当您print print someVariable
时,您将获得None
作为第二部分,因为print的返回值为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
答案 2 :(得分:2)
'无'来自哪里?
功能。
它是什么?
这是函数返回的内容。
在Python中,每个函数都返回一些东西。使用元组可能“多件事”,或者使用None
可能“无所事事”,但它必须返回一些内容。这就是我们如何处理无法指定返回类型的事实(由于您没有为其他任何内容指定类型,因此没有任何意义)。当解释为打印字符串时,None
将替换为字符串“None”。
None
是一个特殊的对象,应该代表没有任何真实的东西。它的类型是NoneType
(它是该类的一个实例)。每当您没有显式返回任何内容时,您将隐式返回None。
您编写的函数可以打印两个值x
或y
中的一个,但不能返回任何内容。所以None
被退回了。然后你要求Python打印调用函数的结果。所以它调用了函数(打印其中一个值),然后将返回值打印为None
,作为文本“无”。
答案 3 :(得分:1)
Ya,基本上你在函数中使用print语句作为返回信息的方法。你不应该这样做。打印与return语句不同。如果您只是希望函数在没有none的情况下给出答案,只需输入jiskya(2,3)即可。您将看到函数抛出的内容,因为函数中有print语句。如果你在函数中键入“return”,它就不会在函数调用之前没有“print”的情况下给你任何东西。
答案 4 :(得分:0)
问题是你写了print jiskya(2,3)
。您将jiskya
的返回值传递给print
函数。 jiskya
本身打印x
或y
,这就是为什么你会看到2.然后print
语句中的print jiskya(2, 3)
本身执行时没有参数。< / p>
对于翻译来说,这是对所发生情况的简化:
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
答案 5 :(得分:0)
您正在进行两次打印,第一次打印在函数的语料库中,第二次打印函数的结果,实际上是无。
你应该做这样的事情:
def yourfunction(x, y):
if x > y:
return y
else:
return x
然后,
>>> print yourfunction(2, 3)
2
答案 6 :(得分:0)
请考虑以下示例:
没有返回语句的功能
Print()函数类型为无。.
def test1():
print("code...!!!")
type(test1())
Output: code...!!!
NoneType
带有返回语句的功能
返回包含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