为什么在`dir()`输出中省略了一些函数?

flo*_*w2k 5 python pycharm

在由PyCharm启动的Python控制台中,它看起来像是runfile一个导入的函数:

In[21]: runfile
Out[21]: <function _pydev_bundle.pydev_umd.runfile(filename, args=None, wdir=None, is_module=False, global_vars=None)>
Run Code Online (Sandbox Code Playgroud)

由于它是本地范围内的名称,不应该在dir()输出中列出吗?

In[22]: print(dir())
['In', 'Out', '_', '_12', '_13', '_14', '_15', '_16', '_17', '_18', '_19', '_21', '_3', '_5', '_6', '_7', '_8', '__', '___', '__builtin__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_dh', '_i', '_i1', '_i10', '_i11', '_i12', '_i13', '_i14', '_i15', '_i16', '_i17', '_i18', '_i19', '_i2', '_i20', '_i21', '_i22', '_i3', '_i4', '_i5', '_i6', '_i7', '_i8', '_i9', '_ih', '_ii', '_iii', '_oh', 'a', 'absolute', 'exit', 'get_ipython', 'numpy', 'quit', 'sys']
Run Code Online (Sandbox Code Playgroud)

hal*_*elf 2

好问题。因为runfile是内置的,就像dir()它本身一样。

如果dir()不带参数可以列出所有可用的调用,它也应该列出自己......

Python shell 不仅会在本地范围内搜索名称,还会在内置模块中搜索名称。

您可以在 中找到dir和。runfiledir(__builtin__)