使用内置的 help() 函数 (最简单直接)
这是最常用、最简单的方法,适用于任何你手头上的函数、模块或对象。

在交互式解释器 (REPL) 或 Jupyter Notebook 中:
直接输入 help(函数名) 即可。
# 定义一个示例函数
def example_func(a, b=10, *, c, d=20):
"""这是一个示例函数,用于演示查看参数。"""
pass
# 查看帮助
help(example_func)
输出结果:
Help on function example_func in module __main__:
example_func(a, b=10, *, c, d=20)
这是一个示例函数,用于演示参数。
在脚本文件中:

如果你在一个 .py 文件中,你也可以使用 help(),但通常会把它放在 if __name__ == "__main__": 块中,这样当脚本被直接运行时才会执行,而不会在被导入时执行。
def example_func(a, b=10, *, c, d=20):
"""这是一个示例函数,用于演示查看参数。"""
pass
if __name__ == "__main__":
help(example_func)
访问函数的 __doc__ 属性
help() 函数内部调用的其实就是函数的 __doc__ 属性(文档字符串),你也可以直接访问它。
def example_func(a, b=10, *, c, d=20):
"""这是一个示例函数,用于演示查看参数。"""
pass
print(example_func.__doc__)
输出结果:
这是一个示例函数,用于演示参数。
这个方法只显示了文档字符串的内容,没有像 help() 那样格式化地显示参数签名,但对于快速获取文档信息很有用。

以编程方式获取参数信息 (最强大、最灵活)
如果你想在程序中动态地检查函数的参数(用于构建文档、实现装饰器或进行参数校验),可以使用 Python 的 inspect 模块,这是最强大和最专业的方法。
需要导入 inspect 模块。
import inspect
inspect.signature()
这是 inspect 模块中最核心的函数,它返回一个 Signature 对象,该对象包含了函数参数的完整信息。
示例函数:
def complex_function(a, b=2, *args, c, d=4, **kwargs):
"""一个包含各种参数类型的复杂函数。"""
pass
使用 inspect.signature():
import inspect
sig = inspect.signature(complex_function)
print(f"签名对象: {sig}")
print(f"参数字符串: {sig.parameters}")
输出结果:
签名对象: (a, b=2, *args, c, d=4, **kwargs)
参数字符串: OrderedDict([('a', <Parameter "a">), ('b', <Parameter "b=2">), ('args', <Parameter "*args">), ('c', <Parameter "c">), ('d', <Parameter "d=4">), ('kwargs', <Parameter "**kwargs">)])
sig.parameters 是一个有序字典(OrderedDict),其中键是参数名,值是 Parameter 对象。
解析 Parameter 对象
我们可以遍历这个字典来获取每个参数的详细信息。
import inspect
def complex_function(a, b=2, *args, c, d=4, **kwargs):
pass
sig = inspect.signature(complex_function)
for name, param in sig.parameters.items():
print(f"参数名: {name}")
print(f" - 类型: {param.kind}") # 参数类型 (POSITIONAL_ONLY, KEYWORD_ONLY, etc.)
print(f" - 默认值: {param.default}") # 默认值,如果没有则为 <class 'inspect._empty'>
print(f" - 注解: {param.annotation}") # 类型注解
print("-" * 20)
输出结果:
参数名: a
- 类型: POSITIONAL_OR_KEYWORD
- 默认值: <class 'inspect._empty'>
- 注解: <class 'inspect._empty'>
--------------------
参数名: b
- 类型: POSITIONAL_OR_KEYWORD
- 默认值: 2
- 注解: <class 'inspect._empty'>
--------------------
参数名: args
- 类型: VAR_POSITIONAL
- 默认值: <class 'inspect._empty'>
- 注解: <class 'inspect._empty'>
--------------------
参数名: c
- 类型: KEYWORD_ONLY
- 默认值: <class 'inspect._empty'>
- 注解: <class 'inspect._empty'>
--------------------
参数名: d
- 类型: KEYWORD_ONLY
- 默认值: 4
- 注解: <class 'inspect._empty'>
--------------------
参数名: kwargs
- 类型: VAR_KEYWORD
- 默认值: <class 'inspect._empty'>
- 注解: <class 'inspect._empty'>
--------------------
Parameter.kind 的主要类型:
POSITIONAL_ONLY: 仅限位置参数 (Python 3.8+ 特有,def f(a, b, /):)POSITIONAL_OR_KEYWORD: 位置或关键字参数 (最常见的参数类型,如a,b)VAR_POSITIONAL: 可变位置参数 (可变参数,如*args)KEYWORD_ONLY: 仅限关键字参数 (星号后面的参数,如c,d)VAR_KEYWORD: 可变关键字参数 (关键字字典,如**kwargs)
查看第三方库和 C 扩展的函数
对于一些用 C 语言编写的库(如 NumPy, Pandas)或者一些复杂的第三方库,help() 和 inspect 有时可能无法提供完美的信息。
IDE (集成开发环境) 的智能提示:
像 VS Code、PyCharm 这样的 IDE 提供了非常强大的代码补全和参数提示功能,当你输入函数名和左括号 时,IDE 会自动弹出该函数的参数列表和说明。
使用库自身的文档:
很多科学计算库都有优秀的文档,查看 NumPy 函数 numpy.array 的参数:
import numpy as np help(np.array)
这会显示 numpy.array 的完整文档,其中包含了非常详细的参数说明。
总结与推荐
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
help(函数名) |
日常交互式编程、快速查看 | 简单、直观、信息全面 | 在脚本中需要条件执行,不适合编程式调用 |
函数.__doc__ |
快速获取文档字符串 | 直接、快速 | 信息不完整,没有参数签名 |
inspect 模块 |
需要编程式分析、高级用法(如装饰器) | 功能强大、信息详细、可自动化 | 代码稍显复杂,需要额外导入 |
| IDE 智能提示 | 编码过程中实时查看 | 无需输入,即时反馈 | 依赖 IDE 环境 |
| 库官方文档 | 查看第三方库复杂函数 | 信息最权威、最详细 | 需要额外打开网页或文档 |
给你的建议:
- 如果你只是想快速了解一个函数怎么用:直接在交互式环境或 Jupyter Notebook 里用
help()。 - 如果你在写代码,IDE 会自动帮你显示:这是最高效的方式。
- 如果你需要写代码来分析其他函数(比如写一个通用的日志装饰器来记录所有传入的参数):
inspect模块是你的不二之选。
