Python 为什么我会得到';无';作为打印语句的输出?

Python 为什么我会得到';无';作为打印语句的输出?,python,python-3.x,function,syntax,nonetype,Python,Python 3.x,Function,Syntax,Nonetype,为什么我会得到以下输出: def print_name(name): print(name) print(print_name('Annabel Lee')) 更准确地说,单词None从何而来?因为您正在打印方法print,所以返回的应该是name,而不是print(name)您有两个调用print:一个在print\u name内部,另一个在函数范围之外 print_name()中的一个打印传入的name。外部的一个打印函数print\u name返回的内容-即None,因为您没有

为什么我会得到以下输出:

def print_name(name):
    print(name)

print(print_name('Annabel Lee'))

更准确地说,单词
None
从何而来?

因为您正在打印方法
print
,所以返回的应该是name,而不是
print(name)

您有两个调用
print
:一个在
print\u name
内部,另一个在函数范围之外

print_name()
中的一个打印传入的
name
。外部的一个打印函数
print\u name
返回的内容-即
None
,因为您没有
return
语句。假设您只需要一个打印输出,您应该
返回它,而不是在函数中打印它:

Annabel Lee
None

或者只需调用
print\u name
,而不将其包装在
print
函数中。

您的函数没有返回任何内容,这就是它没有给出任何内容的原因。
非返回函数返回时没有任何值。

您的函数打印名称,无需再次使用
print()

def print_name(name):
    return name

print(print_name('Annabel Lee'))
如果不在函数中使用
return
,默认情况下,它将返回
None
。如果函数如下所示,则代码是正确的:

def print_name(name):
    print(name)

print_name('Annabel Lee')
print()
函数计算括号中的参数并打印结果。
打印(1+1)
将打印“2”,因为1+1的结果是2。就像那样,
打印(“abcd”.upper())
将打印“abcd”


调用
print(print\u name('Annabel Lee'))
时,print函数尝试计算参数,在本例中为
print\u name('Annabel Lee')
。由于
print\u name()
函数不返回任何值(它只打印'Annabel Lee'),因此返回的值为None。这就是为什么
print()
函数打印“None”。

函数
print\u name
返回
None
,因为没有指定返回。在最终打印语句中打印返回值。
None
不是输出;这是返回值。这两个概念完全不同。令人困惑的是,交互式解释器在计算函数调用时,会将其返回值打印到标准输出。
def print_name(name):
    return name

print(print_name('Annabel Lee'))