在python交互式外壳程序中,执行dir()
函数将打印名称列表。但是在脚本dir()
中没有直接提供任何输出,我必须使用print(dir())
。它不仅是dir(),其他内置函数的行为也相同。
所以我的问题是,shell是否以某种特殊方式执行这些功能?就像是将这些功能隐式地包装在其他功能中一样。
答案 0 :(得分:5)
答案 1 :(得分:2)
这个问题根本不是特定于内置dir
的。
在Python Shell中运行代码时,每个不是NoneType
的语句的结果将回显到Shell,即打印出来。例如,请参阅以下内容。
>>> 2 + 3
5
>>> 2 + 3; 2 + 6
5
8
在进行类似print(2 + 3)
的操作时,您正在使用内置的方法将2 + 3
的结果显示到终端(或输出流所在的任何地方),然后print
返回None
值,不会打印出来。您可以通过手动打印出任何print
返回的值来覆盖它。
>>> print(2 + 3)
5
>>> print(print(2 + 3))
5
None
这对任何语句都相同。
现在,当您直接(而不是通过REPL Shell)执行文件时,它绕开了将每个语句的输出传递到标准输出的步骤。因此,在文件中执行dir
(或任何其他函数)将不会打印出结果,除非您通过print
或其他方式明确地告诉它。