According to Python documentation, both dir()
(without args) and locals()
evaluates to the list of variables in something called local scope
. First one returns list of names, second returns a dictionary of name-value pairs. Is it the only difference? Is this always valid?
assert dir() == sorted( locals().keys() )
Python locals() Function The locals() function returns the local symbol table as a dictionary. A symbol table contains necessary information about the current program.
If locals() is called from within a function, it will return all the names that can be accessed locally from that function. If globals() is called from within a function, it will return all the names that can be accessed globally from that function. The return type of both these functions is dictionary.
Python dir() Function The dir() function returns all properties and methods of the specified object, without the values. This function will return all the properties and methods, even built-in properties which are default for all object.
What is the usage of help() and dir() function in Python? dir([object]) returns all attributes of the object. help(object) generate the help of the given object.
The output of dir()
when called without arguments is almost same as locals()
, but dir()
returns a list of strings and locals()
returns a dictionary and you can update that dictionary to add new variables.
dir(...)
dir([object]) -> list of strings
If called without an argument, return the names in the current scope.
locals(...)
locals() -> dictionary
Update and return a dictionary containing the current scope's local variables.
Type:
>>> type(locals())
<type 'dict'>
>>> type(dir())
<type 'list'>
Update or add new variables using locals()
:
In [2]: locals()['a']=2
In [3]: a
Out[3]: 2
using dir()
, however, this doesn't work:
In [7]: dir()[-2]
Out[7]: 'a'
In [8]: dir()[-2]=10
In [9]: dir()[-2]
Out[9]: 'a'
In [10]: a
Out[10]: 2
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With