parameters: (self, skip_op_callstack=True)
return_statement: return program_str
docstring: Get readable debug string of Program.
  
          .. note::
              If you want to get the debug string in protobuf format,
              please use :code:`to_string` method.
  
          Args:
              skip_op_callstack(bool): whether to skip parsing Operator's attribute
                  op_callstack, default value is True
  
          Returns:
              string: The formatted Program string.
  
          Examples:
              .. code-block:: python
  
              import paddle
              import paddle.static as static
  
              paddle.enable_static()
  
              cur_program = static.Program()
              cur_block = cur_program.current_block()
              new_var = cur_block.create_var(name="X",
                                             shape=[-1, 23, 48],
                                             dtype='float32')
              new_op = cur_block.append_op(type="abs",
                                  inputs={"X": [new_var]},
                                  outputs={"Out": [new_var]})
              print(cur_program._to_readable_code())
docstring_summary: Get readable debug string of Program.
docstring_tokens: Get readable debug string of Program .
function: def _to_readable_code(self, skip_op_callstack=True):
          """
          Get readable debug string of Program.
  
          .. note::
              If you want to get the debug string in protobuf format,
              please use :code:`to_string` method.
  
          Args:
              skip_op_callstack(bool): whether to skip parsing Operator's attribute
                  op_callstack, default value is True
  
          Returns:
              string: The formatted Program string.
  
          Examples:
              .. code-block:: python
  
              import paddle
              import paddle.static as static
  
              paddle.enable_static()
  
              cur_program = static.Program()
              cur_block = cur_program.current_block()
              new_var = cur_block.create_var(name="X",
                                             shape=[-1, 23, 48],
                                             dtype='float32')
              new_op = cur_block.append_op(type="abs",
                                  inputs={"X": [new_var]},
                                  outputs={"Out": [new_var]})
              print(cur_program._to_readable_code())
          """
          assert isinstance(
              skip_op_callstack, bool
          ), "skip_op_callstack parameter's type is error, expect bool, received {}".format(
              type(skip_op_callstack))
          program_str = ""
          for block in self.blocks:
              program_str += block._to_readable_code(skip_op_callstack)
              program_str += '\n'
          return program_str
function_tokens: def _to_readable_code ( self , skip_op_callstack = True ) : assert isinstance ( skip_op_callstack , bool ) , "skip_op_callstack parameter's type is error, expect bool, received {}" . format ( type ( skip_op_callstack ) ) program_str = "" for block in self . blocks : program_str += block . _to_readable_code ( skip_op_callstack ) program_str += '\n' return program_str