codegen.py 文件源码

python
阅读 33 收藏 0 点赞 0 评论 0

项目:transmutagen 作者: ergs 项目源码 文件源码
def _print_Add(self, expr):
        if not (self._settings['use_autoeye'] or self._settings['py_solve']):
            return super()._print_Add(expr)

        prec = precedence(expr)

        num_terms = [i for i in expr.args if i.is_number]
        rest_terms = [i for i in expr.args if i not in num_terms]

        if len(rest_terms) > 1:
            rest = super()._print_Add(Add(*rest_terms))
        elif len(rest_terms) == 1:
            rest = self._print(rest_terms[0])
        else:
            if self._settings['py_solve']:
                return super()._print_Add(expr)
            rest = ''

        if len(num_terms) > 1:
            num = self.__class__({**self._settings, 'use_autoeye': False})._print_Add(Add(*num_terms))
        elif len(num_terms) == 1:
            num = self.__class__({**self._settings, 'use_autoeye': False})._print(num_terms[0])
        else:
            num = ''

        if rest and num:
            if self._settings['py_solve']:
                return "diag_add(%s, %s)" % (self._print(rest_terms[0]), self._print(Add(*num_terms)))
            return self.parenthesize(rest + ' + autoeye(%s)' % num, prec)
        elif rest:
            return self.parenthesize(rest, prec)
        else:
            if self._settings['use_autoeye']:
                # No need to parenthesize
                return 'autoeye(%s)' % num
            else:
                return self.parenthesize(num, prec)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号