Python函数参数如何查看?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 参数 正文

使用内置的 help() 函数 (最简单直接)

这是最常用、最简单的方法,适用于任何你手头上的函数、模块或对象。

python 函数参数 查看
(图片来源网络,侵删)

在交互式解释器 (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)
    这是一个示例函数,用于演示参数。

在脚本文件中:

python 函数参数 查看
(图片来源网络,侵删)

如果你在一个 .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 函数参数 查看
(图片来源网络,侵删)

以编程方式获取参数信息 (最强大、最灵活)

如果你想在程序中动态地检查函数的参数(用于构建文档、实现装饰器或进行参数校验),可以使用 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 CodePyCharm 这样的 IDE 提供了非常强大的代码补全和参数提示功能,当你输入函数名和左括号 时,IDE 会自动弹出该函数的参数列表和说明。

使用库自身的文档:

很多科学计算库都有优秀的文档,查看 NumPy 函数 numpy.array 的参数:

import numpy as np
help(np.array)

这会显示 numpy.array 的完整文档,其中包含了非常详细的参数说明。


总结与推荐

方法 适用场景 优点 缺点
help(函数名) 日常交互式编程、快速查看 简单、直观、信息全面 在脚本中需要条件执行,不适合编程式调用
函数.__doc__ 快速获取文档字符串 直接、快速 信息不完整,没有参数签名
inspect 模块 需要编程式分析、高级用法(如装饰器) 功能强大、信息详细、可自动化 代码稍显复杂,需要额外导入
IDE 智能提示 编码过程中实时查看 无需输入,即时反馈 依赖 IDE 环境
库官方文档 查看第三方库复杂函数 信息最权威、最详细 需要额外打开网页或文档

给你的建议:

  • 如果你只是想快速了解一个函数怎么用:直接在交互式环境或 Jupyter Notebook 里用 help()
  • 如果你在写代码,IDE 会自动帮你显示:这是最高效的方式。
  • 如果你需要写代码来分析其他函数(比如写一个通用的日志装饰器来记录所有传入的参数):inspect 模块是你的不二之选
-- 展开阅读全文 --
头像
人工智能语音电话机器人好用吗?
« 上一篇 今天
starlink卫星设计参数
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]