Print/console.log "combinators"

I have Python expressions/objects that:
(1) if I leave them as last expr of a cell, Jupyter will display it (ex: Image)
(2) if I try to output it via a print(…), python will provide a text output, which Jupyter then outputs

I was wondering if Jupyter notebooks has:
(1) something like a print / console.log that outputs not text, but rich jupyter expressions (like HTML, or how the object would be displayed if left as last expr in a cell)
(2) combinators: hbox(…), vbox(…), table(…) (like latex commands) which allows us to build jupyter output objects from simpler jupyter output objects

Thanks!