<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def d(obj, mode='exec', file=None):
 """ Interactive convenience for displaying the disassembly of a function, module, or code string. Compiles `text` and recursively traverses the result looking for `code` objects to render with `dis.dis`. Parameters obj : str, CodeType, or object with __code__ attribute Object to disassemble. If `obj` is an instance of CodeType, we use it unchanged. If `obj` is a string, we compile it with `mode` and then disassemble. Otherwise, we look for a `__code__` attribute on `obj`. mode : {'exec', 'eval'}, optional Mode for `compile`. Default is 'exec'. file : None or file-like object, optional File to use to print output. If the default of `None` is passed, we use sys.stdout. """

    if file is None:
        file = sys.stdout

    for name, co in walk_code(extract_code(obj, compile_mode=mode)):
        print(name, file=file)
        print('-' * len(name), file=file)
        dis.dis(co, file=file)
        print('', file=file)