查看Python源代码获取函数信息

0 投票
5 回答
514 浏览
提问于 2025-04-15 20:50

以下代码来自matplotlib的示例库:

#!/usr/bin/env python
from pylab import *

x = array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])
y = array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68])

我刚开始学习python,想把输入文件中的内容改成 xy 的值。我有两个简单的问题:

  1. 我能猜到 array 是什么,但当我在代码中看到它时,怎么知道它属于哪个库,以及更多的信息呢?我需要使用什么python调试命令吗?
  2. 我该如何把输入文件的内容放到 x 中呢?

谢谢

5 个回答

1
  • 使用 help 函数可以查看一个对象能做什么。

    import pylab
    help(pylab.array)
    
  • 问“它属于哪个库”这个问题有点搞笑。如果你不使用 import * 来引入库,你就能很容易知道你用的模块是什么。(绝对不要使用 import *。)这并不意味着这是它最初的来源——pylab 只是一个方便的地方,聚集了很多东西。pylab 是从 matplotlib.pylab 引入的,而 matplotlib.pylab 又是从 numpy 引入的,numpy 则是从 numpy.core.multiarray 引入的(这是一个C语言扩展模块)。如果需要了解它的原始来源,可以查看 pylab.array.__module__,不过这种情况并不常见。

    • 我个人认为,最好完全不使用 pylab,而是根据需要直接从 numpyscipymatplotlib 获取东西,这样能保持代码的整洁。引用《Python之禅》中的一句话:命名空间是个非常棒的主意——让我们多用一些吧!
  • 如何从文件构建一个 numpy 数组,取决于文件的格式。numpy.fromfile/pylab.fromfile 可以导入存储数组数据的二进制文件。(这和 numpy.tofile 使用的格式是一样的——这可真让人吃惊。)

1

(1) 打开 Python 控制台,然后对你想了解的对象、类或变量使用 dir() 函数。这样会打印出这个对象的所有方法和属性。

>> import pylab        
>> x =  pylab.array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])
>> dir(x)

(2) 在 Python 文档中查找 文件对象 的相关内容。

2

关于你提到的第一个问题,这其实是给你这个程序的人习惯不好造成的。正确的写法应该是:

#!/usr/bin/env python
import pylab

x = pylab.array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])
y = pylab.array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68])

help(pylab.array)

或者

#!/usr/bin/env python
from pylab import array

x = array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])
y = array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68])

help(array)

你可以使用 help(某个东西)。这样会很有帮助的 :)

如果程序变得稍微复杂一些,使用明确的导入方式会非常方便。我知道的唯一一个适合使用 from package import * 的情况,就是在 Python 提示符下玩的时候,试验一些东西。

至于文件,你能大致描述一下这个文件的样子吗?我相信 numpy 里有一个加载数组的函数,去看看这个 食谱吧。

撰写回答