$ python
>>> import sys
>>> dir(sys) # get list of attributes for sys module
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__stderr__',
'__stdin__', '__stdout__', '_getframe', 'api_version', 'argv',
'builtin_module_names', 'byteorder', 'call_tracing', 'callstats',
'copyright', 'displayhook', 'exc_clear', 'exc_info', 'exc_type',
'excepthook', 'exec_prefix', 'executable', 'exit', 'getcheckinterval',
'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding',
'getrecursionlimit', 'getrefcount', 'hexversion', 'maxint', 'maxunicode',
'meta_path','modules', 'path', 'path_hooks', 'path_importer_cache',
'platform', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setdlopenflags',
'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout',
'version', 'version_info', 'warnoptions']
>>> dir() # get list of attributes for current module
['__builtins__', '__doc__', '__name__', 'sys']
>>>
>>> a = 5 # create a new variable 'a'
>>> dir()
['__builtins__', '__doc__', '__name__', 'a', 'sys']
>>>
>>> del a # delete/remove a name
>>>
>>> dir()
['__builtins__', '__doc__', '__name__', 'sys']
>>>
它如何工作
首先,我們來(lái)看一下在輸入的 sys 模塊上使用 dir。我們看到它包含一個(gè)龐大的屬性列表。
接下來(lái),我們不給 dir 函數(shù)傳遞參數(shù)而使用它——默認(rèn)地,它返回當(dāng)前模塊的屬性列表。注意,輸入的模塊同樣是列表的一部分。
為了觀察 dir 的作用,我們定義一個(gè)新的變量 a 并且給它賦一個(gè)值,然后檢驗(yàn) dir,我們觀察到在列表中增加了以上相同的值。我們使用del語(yǔ)句刪除當(dāng)前模塊中的變量/屬性,這個(gè)變化再一次反映在 dir 的輸出中。
關(guān)于 del 的一點(diǎn)注釋——這個(gè)語(yǔ)句在運(yùn)行后被用來(lái) 刪除 一個(gè)變量/名稱。在這個(gè)例子中,del a,你將無(wú)法再使用變量 a——它就好像從來(lái)沒(méi)有存在過(guò)一樣。