Python 如何将O(exp(n*log(2))替换为O(2**n)进行同步打印

Python 如何将O(exp(n*log(2))替换为O(2**n)进行同步打印,python,big-o,sympy,Python,Big O,Sympy,我正在使用SymPy order库尝试一些东西,并发现以下等式: O(2**n, (n, oo)) 输出将是O(exp(n*log(2)) 有没有办法使SymPy输出O(2**n)而不是O(exp(n*log(2)) >>> o = O(2**n, (n, oo)) >>> Function("O")(*map(simplify,o.args)) O(2**n, (n, oo)) 但是,如果您希望能够以这种方式打印,那么您必须创建一个自定义打印机,以允许以

我正在使用
SymPy order
库尝试一些东西,并发现以下等式:

O(2**n, (n, oo))
输出将是
O(exp(n*log(2))

有没有办法使SymPy输出
O(2**n)
而不是
O(exp(n*log(2))

>>> o = O(2**n, (n, oo))
>>> Function("O")(*map(simplify,o.args))
O(2**n, (n, oo))
但是,如果您希望能够以这种方式打印,那么您必须创建一个自定义打印机,以允许以这种方式打印。如果执行
o.func(*map(…)
——即使使用
evaluate=False
——它也会返回到
exp
表单,因此这看起来是硬编码的,就像
o
想要显示的那样。关于是否应使用O添加/遵守
evaluate
关键字,可能值得提出一个问题