Using Python for modeling DUT behaviour

Hi
This page on VerificationAcademy, presents a very useful and straightforward method for integration of MATLAB developed reference models into a UVM testbench.
Considering the fact that some people may find Python a better alternative for creating a high level model of their RTL design, my question is that, is there a similar flow available for integration of a Python developed reference model into a UVM testbench? Or maybe there is some good reason to stick with MATLAB and prefer it to Python? I would highly appreciate some guidance on this point. Which one, MATLAB or Python, is better suited for modeling DUT behavior? And if the answer is Python, I would be thankful to get some instructions on how to integrate such a model into a UVM testbench.
Thank you

In reply to Farhad:

New programming languages are usually created to fill functional holes in existing languages. MATLAB is certainly best suited for describing and executing “math” heavy models like signal or image processing. MATLAB generates C code that gets integrated into UVM testbenches and called directly through the SystemVerilog DPI.

You can do a similar thing by using the DPI to call C code, and then have the C code call Python.

Whether using Python is better suited to model DUT behavior depends on what that behavior is, and what kind of performance/capacity you need. SystemVerilog is certainly better at manipulating bits (packing/unpacking, serializing/deserializing). Does your DUT behavior map to existing Python libraries like numpy which do the heavy computation in C for you?

If you are interested in doing the entire testbench in Python (or at least do not need to integrate the Python testbench with other part of the testbench not written in Python), then there are a number of package you might want to look at. One of which is called cocotb.