• 自封装函数参数检索


    import inspect
    
    
    class CheckParams:
    
        def __init__(self, fn):
            self.fn_params = inspect.signature(fn).parameters
    
        @property
        def get_required_kw_args(self):                 # 必须存在的关键字参数
            args = []
            for name, param in self.fn_params.items():
                if param.kind == inspect.Parameter.KEYWORD_ONLY and param.default == inspect.Parameter.empty:
                    args.append(name)
            return tuple(args)
    
        @property
        def get_named_kw_args(self):                    # 有名字的关键字参数
            args = []
            for name, param in self.fn_params.items():
                if param.kind == inspect.Parameter.KEYWORD_ONLY:
                    args.append(name)
            return tuple(args)
    
        @property
        def get_required_args(self):                    # 位置参数(必须存在的)
            args = []
            for name, params in self.fn_params.items():
                if params.kind == inspect.Parameter.POSITIONAL_OR_KEYWORD:
                    args.append(name)
            return tuple(args)
    
    
    def foo(a, b, *args, c, request, d=None, e, **kwargs):
        pass
    
    
    checker = CheckParams(foo)
    
    print(checker.get_named_kw_args)        # ('c', 'request', 'd', 'e')
    print(checker.get_required_args)        # ('a', 'b')
    print(checker.get_required_kw_args)     # ('a', 'b')
  • 相关阅读:
    特效导航栏
    json基础用法
    CSS盒模型以及如何解决边距重叠问题
    JS设置和获取盒模型的宽和高
    太极图
    JS旋转和css旋转
    正则表达式三-元字符
    正则表达式语法二-量词
    逻辑运算符
    字符串和正则的相关方法
  • 原文地址:https://www.cnblogs.com/chedanlangren/p/8399922.html
Copyright © 2020-2023  润新知