Convertir Número a Formato Moneda con Python

Método para convertir un número int o float a un string con formato de moneda y separación de miles en Python.


def set_moneda(num, simbolo="US$", n_decimales=2):
    """Convierte el numero en un string en formato moneda
    set_moneda(45924.457, 'RD$', 2) --> 'RD$ 45,924.46'     
    """
    # Redondea el número a los decimales indicados
    num = round(num, n_decimales)

    # Convierte el número a string y separa la parte entera de la decimal
    num, dec = str(num).split(".")

    # Completa los decimales con ceros si es necesario
    dec += "0" * (n_decimales - len(dec))

    # Formatea el número con comas para los miles
    num = "{:,}".format(int(num))

    # Si el número es negativo, añade el signo al principio
    if num[0] == "-":
        num = "-{}".format(num[1:])

    # Si no se especifican decimales, retorna un número entero
    if n_decimales == 0:
        return "{} {}".format(simbolo, num)

    return "{} {}.{}".format(simbolo, num, dec)

# Ejemplo de uso
print(set_moneda(45924.457, "RD$", 2))