关于Python print()函数的两项技术疑问咨询
Python print()函数相关问题解析
相关代码
print("Line 1") print(">>>") type(print("Hello")) print() print("Line 2") print(">>>") print(print("Hello")) print() print("Line 3") print(">>>") a = print("Hello") b = a print("a:", a, "b:", b)
Python 3.9版本运行输出
Line 1 >>> Hello Line 2 >>> Hello None Line 3 >>> Hello a: None b: None
问题解答
1. 在代码的Line 1部分,print("Hello")会返回None,为何type(print("Hello"))的执行结果未被输出?
Python里只有两种情况会自动输出表达式结果:一是在交互式命令行直接输入表达式回车,二是把表达式作为print()的参数打印。Line1中的type(print("Hello"))只是算出了结果(也就是<class 'NoneType'>),但没有用print()输出这个结果,所以你看不到它。而print("Hello")本身是函数调用,执行时会直接打印"Hello",但它的返回值类型结果因为没被主动打印,自然不会显示。
2. 已知IIFE(立即调用函数表达式)是JavaScript的相关术语,为何Python的print()函数会表现出类似IIFE的特性,例如被调用时立即执行(如Line 3的输出所示)?
这和IIFE完全是两码事。Python里所有函数只要加了括号调用,就会立即执行,这是Python函数调用的基本规则,不是什么特殊特性。比如Line3里的a = print("Hello"),Python会先执行等号右边的print("Hello")(所以先打出"Hello"),再把它的返回值None赋值给变量a。而JS的IIFE是为了创建独立作用域专门设计的立即执行匿名函数的写法,和Python这种常规函数调用逻辑根本不是一个概念。
内容的提问来源于stack exchange,提问作者rustlecho
相关产品推荐
相关产品推荐

