inline.py 文件源码

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

项目:fatoptimizer 作者: vstinner 项目源码 文件源码
def build_positional_args(self, candidate, callsite):
        """Attempt to convert the positional and keyword args supplied at
        the given callsite to the positional args expected by the candidate
        funcdef.

        Return a list of ast.Node instances, or raise ValueError if it
        can't be done.
        """
        if len(callsite.args) > len(candidate.args.args):
            raise ValueError('too many positional arguments')
        slots = {}
        for idx, arg in enumerate(callsite.args):
            slots[idx] = arg
        for actual_kwarg in get_keywords(callsite):
            idx = locate_kwarg(candidate, actual_kwarg.arg)
            if idx in slots:
                raise ValueError('positional slot %i already filled' % idx)
            slots[idx] = actual_kwarg.value
        actual_pos_args = []
        for idx in range(len(candidate.args.args)):
            if idx not in slots:
                raise ValueError('argument %i not filled' % idx)
            actual_pos_args.append(slots[idx])
        return actual_pos_args
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号