
python如何获得函数参数
用户关注问题
我想知道如何在Python中查看一个函数的所有参数名称和顺序,有没有简便的方法可以实现?
使用inspect模块获取函数参数
Python的inspect模块提供了getfullargspec()函数,可以获取指定函数的参数信息,包括位置参数、默认值、可变参数和关键字参数等。示例代码:
import inspect
def foo(a, b=2, *args, **kwargs):
pass
argspec = inspect.getfullargspec(foo)
print(argspec.args) # ['a', 'b']
print(argspec.varargs) # args
print(argspec.varkw) # kwargs
想知道怎么在Python中取出函数参数的默认值,特别是针对有默认参数的函数,该如何实现?
inspect.getfullargspec()中的defaults属性
使用inspect模块的getfullargspec()可以得到函数的参数默认值,这些默认值会存储在defaults属性中,该属性是一个包含所有有默认值参数的元组。通过结合args属性可以对应参数名和默认值。示例:
import inspect
def sample(x, y=10, z=20):
pass
spec = inspect.getfullargspec(sample)
print(spec.args) # ['x', 'y', 'z']
print(spec.defaults) # (10, 20)
我的函数使用了类型注解,我想从外部程序获取函数参数的类型,应该用什么方法?
通过inspect.signature获取类型注解
inspect模块中的signature函数可以得到函数的签名信息,返回的Signature对象包含了所有参数及其注解。可以遍历参数字典,获取每个参数的类型注解。示例代码:
import inspect
def greet(name: str, age: int = 20) -> None:
pass
sig = inspect.signature(greet)
for param in sig.parameters.values():
print(param.name, param.annotation)