Python中嵌套调用print(print("Hello"))为何输出hello和None?
Python 双重print函数运行逻辑解答
Python执行嵌套函数调用时,会优先从最内层的参数开始计算,再将计算结果传入外层函数执行,这段代码的运行步骤如下:
- 第一步执行内层的
print("Hello"):- 执行
print的内置逻辑,将传入的字符串Hello输出到控制台,此时你会看到第一行输出Hello print属于无返回值的内置函数,Python中所有没有显式定义return返回内容的函数,默认返回值都是None,因此内层函数执行完成后,会把None作为参数传给外层的print
- 执行
- 第二步执行外层的
print():- 接收到的入参就是内层函数返回的
None,因此会执行打印逻辑,输出第二行结果None
- 接收到的入参就是内层函数返回的
你也可以把嵌套代码拆分开验证逻辑,等效代码如下:
# 先执行内层print,同时拿到它的返回值 inner_return = print("Hello") # 此时控制台已经输出了第一行Hello,inner_return的值为None print(inner_return) # 控制台输出第二行None
运行拆分后的代码,得到的输出和你贴的结果完全一致。
内容的提问来源于stack exchange,提问作者draw electric
相关产品推荐
相关产品推荐

