python如何获得函数参数

python如何获得函数参数

作者:Joshua Lee发布时间:2026-01-05阅读时长:0 分钟阅读次数:8

用户关注问题

Q
怎样查看Python函数的参数列表?

我想知道如何在Python中查看一个函数的所有参数名称和顺序,有没有简便的方法可以实现?

A

使用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

Q
Python如何获取函数参数的默认值?

想知道怎么在Python中取出函数参数的默认值,特别是针对有默认参数的函数,该如何实现?

A

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)

Q
如何在Python中获取函数的参数类型信息?

我的函数使用了类型注解,我想从外部程序获取函数参数的类型,应该用什么方法?

A

通过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)

输出:

name <class 'str'>

age <class 'int'>