core_ipython_features
核心 IPython 功能(补全、自省)
Section titled “核心 IPython 功能(补全、自省)”除了基本的代码执行,IPython 还提供了强大的功能,可以显著提高交互式会话期间的生产力。其中两个基本功能是 Tab 补全和对象自省。
Tab 补全
Section titled “Tab 补全”IPython 提供了上下文感知的代码元素补全功能,通过按 Tab 键即可实现。这适用于:
- 变量名: 补全命名空间中已定义的变量名称。
- 关键字: 补全 Python 关键字(如
import,for,def)。 - 对象属性和方法: 在输入对象名称后加上点 (
.),然后按Tab会显示该对象的可用属性和方法列表。 - 函数关键字参数: 在函数调用内部,
Tab可以建议可用的关键字参数。 - 文件路径: 输入看起来像路径的字符串时,
Tab会尝试补全文件和目录名称。 - 魔术命令: 在输入
%后,可以补全魔术命令名称。
示例:
In [1]: my_variable = 100
In [2]: import numpy as np
In [3]: my_arr = np.array([1, 2, 3])
# 在 IPython cell 中尝试以下命令:# my_var<Tab> --> 补全为 my_variable# np.ar<Tab> --> 建议 array, arange 等# my_arr.<Tab> --> 显示 .sum(), .mean() 等方法,以及 .shape, .dtype 等属性# np.array? --> (参见下面的对象自省)# np.array(obj<Tab> --> 建议 object=..., dtype=..., copy=..., 等参数# %his<Tab> --> 补全为 %historyTab 补全极大地减少了输入,有助于防止拼写错误,并充当了一种发现对象功能(capabilities)的机制。
对象自省 (?, ??)
Section titled “对象自省 (?, ??)”自省 (Introspection) 是指在运行时检查 Python 对象属性的能力。IPython 提供了一种方便的语法,使用问号(?)来访问对象的文档和信息。
object?: 显示对象的信息,如类型、文档字符串(docstring)、函数签名(如果适用)和文件位置。object??: 提供更详细的信息,包括对象的源代码(如果可用,例如对于在 Python 中定义的函数或类)。
这适用于变量、函数、模块、类、方法等。
In [4]: import pandas as pd
# 自省变量In [5]: my_arr?# 输出:# Type: ndarray# String form: [1 2 3]# Length: 3# ... (更多信息)
# 自省函数In [6]: pd.read_csv?# 输出:显示函数签名、详细的文档字符串(解释参数、示例等)
# 自省模块In [7]: pd?# 输出:显示模块文档字符串、文件路径等
# 获取函数源代码 (如果可用)In [8]: def my_function(a, b=1): ...: """This is my custom function.""" ...: return a + b ...:
In [9]: my_function??# 输出:# Signature: my_function(a, b=1)# Docstring: This is my custom function.# Source:# def my_function(a, b=1):# """This is my custom function."""# return a + b# File: ...# Type: function通配符自省:您还可以结合 ? 使用通配符(*)来搜索命名空间。
In [10]: *Warning? # 查找所有以 'Warning' 结尾的名称# 输出:UserWarning, DeprecationWarning, RuntimeWarning, etc.使用 ? 和 ?? 进行自省对于快速查看如何使用函数、了解对象是什么,甚至无需离开交互式会话即可查看源代码,都非常有用。它极大地有助于探索和调试。
Tab 补全和对象自省这两个核心功能,是 IPython 和 Jupyter 提供流畅高效工作流程的基础。