test_ast.py 文件源码

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

项目:web_ctp 作者: molebot 项目源码 文件源码
def _check_arguments(self, fac, check):
        def arguments(args=None, vararg=None, varargannotation=None,
                      kwonlyargs=None, kwarg=None, kwargannotation=None,
                      defaults=None, kw_defaults=None):
            if args is None:
                args = []
            if kwonlyargs is None:
                kwonlyargs = []
            if defaults is None:
                defaults = []
            if kw_defaults is None:
                kw_defaults = []
            args = ast.arguments(args, vararg, varargannotation, kwonlyargs,
                                 kwarg, kwargannotation, defaults, kw_defaults)
            return fac(args)
        args = [ast.arg("x", ast.Name("x", ast.Store()))]
        check(arguments(args=args), "must have Load context")
        check(arguments(varargannotation=ast.Num(3)),
              "varargannotation but no vararg")
        check(arguments(varargannotation=ast.Name("x", ast.Store()), vararg="x"),
                         "must have Load context")
        check(arguments(kwonlyargs=args), "must have Load context")
        check(arguments(kwargannotation=ast.Num(42)),
                       "kwargannotation but no kwarg")
        check(arguments(kwargannotation=ast.Name("x", ast.Store()),
                          kwarg="x"), "must have Load context")
        check(arguments(defaults=[ast.Num(3)]),
                       "more positional defaults than args")
        check(arguments(kw_defaults=[ast.Num(4)]),
                       "length of kwonlyargs is not the same as kw_defaults")
        args = [ast.arg("x", ast.Name("x", ast.Load()))]
        check(arguments(args=args, defaults=[ast.Name("x", ast.Store())]),
                       "must have Load context")
        args = [ast.arg("a", ast.Name("x", ast.Load())),
                ast.arg("b", ast.Name("y", ast.Load()))]
        check(arguments(kwonlyargs=args,
                          kw_defaults=[None, ast.Name("x", ast.Store())]),
                          "must have Load context")
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号