Difference between dir() and help()

In Python, help() is a super useful built-in function that can be used to return the Python documentation of a particular object, method, attributes, etc. example
my_list = [] help(my_list.append)
Help on built-in function append: append(...) method of builtins.list instance L.append(object) -> None -- append object to end
In python, dir() shows a list of attributes for the object passed in as argument , without an argument it returns the list of names in the current local namespace (similar to locals().keys() ) . example
my_list = [] print(dir(my_list))
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__' , '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__' , '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__' , '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_e x__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__s izeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'ex tend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
There is no hard rules as to what they will give, consequently they may change from version to version. Any differences are unlikely to be deliberate, but merely side-effects of the specific implementation of each.