来自print(print(print(print('aaa')))的Python输出

时间:2018-06-23 11:00:09

标签: python python-3.x

我不太了解从以下位置收到的输出:

  

print(print(print(print('aaa'))))

     

aaa

     

没有

     

没有

第一个aaa很清楚。但是我认为第二个print(aaa)将抛出错误,因为未定义变量aaa ...

5 个答案:

答案 0 :(得分:7)

  

print(print('aaa'))

外部EasyVideoCallback将不接受内部print打印到标准输出的内容,而是内部print返回的内容作为参数。 print函数从不返回任何内容(等同于返回print)。这就是为什么您看到此输出的原因。

答案 1 :(得分:2)

这是一个执行相同操作的示例,您将更好地理解它:

def f():
    print('Hello')
print(f())

输出:

Hello
None

None到了最后,因为您基本上在做print(print('Hello'))print在python解释器中写东西,当您执行type(print())时它也会输出:{{1 }}这部分是<class 'NoneType'>

这就是print(None)的输出包含print(print(print('aaa')))的原因

答案 2 :(得分:2)

首先,我们只是拆分代码

=ARRAYFORMULA(MMULT(IF(L3:N5=L1:N1,TRANSPOSE(P3:P5),TRANSPOSE(Q3:Q5)),TRANSPOSE(COLUMN(L1:N1))^0))

现在您了解了! (Python 3)

答案 3 :(得分:1)

show在标准输出上打印并返回print。您的第二条None语句得到第一个print的结果,即print

答案 4 :(得分:1)

在python中,当函数未明确返回任何内容时,它将返回None

类似print的函数可以执行操作,但不应返回任何内容,因此它返回None。打印功能可能是这样的:

import sys


def print(*args, sep=' ', end='\n', file=sys.stdout, flush=False)
    for arg in args:
        file.write(str(arg))
        if arg is not args[-1]:
            file.write(str(sep))
    file.write(str(end))
    if flush:
        sys.stdout.flush()

等同于:

def print(*args, sep=' ', end='\n', file=sys.stdout, flush=False):
    # The same code
    return None

在两种情况下,您都会得到

>>> print('Hello world')
Hello world
>>> print(print('Hello world'))
Hello world
None

希望这会有所帮助。