print(dir())和dir()之间的区别

时间:2018-06-25 18:02:42

标签: python

在python交互式外壳程序中,执行dir()函数将打印名称列表。但是在脚本dir()中没有直接提供任何输出,我必须使用print(dir())。它不仅是dir(),其他内置函数的行为也相同。
所以我的问题是,shell是否以某种特殊方式执行这些功能?就像是将这些功能隐式地包装在其他功能中一样。

2 个答案:

答案 0 :(得分:5)

交互式外壳是称为REPL的更笼统概念的示例,其代表:

  • R ead
  • E 评估
  • P 轮换
  • L oop

上面的 P 是交互式外壳程序和常规脚本之间的区别。外壳程序正在为您调用print

答案 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或其他方式明确地告诉它。