将默认值与参数名称匹配
Matching default values to parameter name
如何使用 python 和检查将我的函数变量名称与默认值匹配?
def foo(x:int,y:int=5) -> int: return a+b
inspect.getfullargspec(foo)
FullArgSpec(args=['x', 'y'], varargs=None, varkw=None, defaults=(4,), kwonlyargs=[], kwonlydefaults=None, annotations={'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>})
我可以获取参数和默认值,但是当您尝试将它们排列起来时,它们不是 1:1。
如果您要将这两个数组压缩到字典中,x 将映射到 4 而 y 不会映射到任何内容。但是结果应该是y=4.
谢谢
您可以将 inspect.signature()
which returns a Signature
对象用于您的函数。然后您可以轻松访问参数及其各自的注释和默认值。
In [96]: s = inspect.signature(foo)
In [97]: s.parameters
Out[97]: mappingproxy({'x': <Parameter "x: int">, 'y': <Parameter "y: int = 5">})
In [98]: s.parameters['x']
Out[98]: <Parameter "x: int">
In [99]: s.parameters['y']
Out[99]: <Parameter "y: int = 5">
或单独访问注释或默认值:
In [106]: s.parameters['y'].annotation
Out[106]: int
In [107]: s.parameters['y'].default
Out[107]: 5
如何使用 python 和检查将我的函数变量名称与默认值匹配?
def foo(x:int,y:int=5) -> int: return a+b
inspect.getfullargspec(foo)
FullArgSpec(args=['x', 'y'], varargs=None, varkw=None, defaults=(4,), kwonlyargs=[], kwonlydefaults=None, annotations={'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>})
我可以获取参数和默认值,但是当您尝试将它们排列起来时,它们不是 1:1。
如果您要将这两个数组压缩到字典中,x 将映射到 4 而 y 不会映射到任何内容。但是结果应该是y=4.
谢谢
您可以将 inspect.signature()
which returns a Signature
对象用于您的函数。然后您可以轻松访问参数及其各自的注释和默认值。
In [96]: s = inspect.signature(foo)
In [97]: s.parameters
Out[97]: mappingproxy({'x': <Parameter "x: int">, 'y': <Parameter "y: int = 5">})
In [98]: s.parameters['x']
Out[98]: <Parameter "x: int">
In [99]: s.parameters['y']
Out[99]: <Parameter "y: int = 5">
或单独访问注释或默认值:
In [106]: s.parameters['y'].annotation
Out[106]: int
In [107]: s.parameters['y'].default
Out[107]: 5