查看Python源代码获取函数信息
以下代码来自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,想把输入文件中的内容改成 x
和 y
的值。我有两个简单的问题:
- 我能猜到
array
是什么,但当我在代码中看到它时,怎么知道它属于哪个库,以及更多的信息呢?我需要使用什么python调试命令吗? - 我该如何把输入文件的内容放到
x
中呢?
谢谢
5 个回答
使用
help
函数可以查看一个对象能做什么。import pylab help(pylab.array)
问“它属于哪个库”这个问题有点搞笑。如果你不使用
import *
来引入库,你就能很容易知道你用的模块是什么。(绝对不要使用import *
。)这并不意味着这是它最初的来源——pylab
只是一个方便的地方,聚集了很多东西。pylab
是从matplotlib.pylab
引入的,而matplotlib.pylab
又是从numpy
引入的,numpy
则是从numpy.core.multiarray
引入的(这是一个C语言扩展模块)。如果需要了解它的原始来源,可以查看pylab.array.__module__
,不过这种情况并不常见。- 我个人认为,最好完全不使用
pylab
,而是根据需要直接从numpy
、scipy
和matplotlib
获取东西,这样能保持代码的整洁。引用《Python之禅》中的一句话:命名空间是个非常棒的主意——让我们多用一些吧!
- 我个人认为,最好完全不使用
如何从文件构建一个 numpy 数组,取决于文件的格式。
numpy.fromfile
/pylab.fromfile
可以导入存储数组数据的二进制文件。(这和numpy.tofile
使用的格式是一样的——这可真让人吃惊。)
(1) 打开 Python 控制台,然后对你想了解的对象、类或变量使用 dir() 函数。这样会打印出这个对象的所有方法和属性。
>> import pylab
>> x = pylab.array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])
>> dir(x)
(2) 在 Python 文档中查找 文件对象 的相关内容。
关于你提到的第一个问题,这其实是给你这个程序的人习惯不好造成的。正确的写法应该是:
#!/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 里有一个加载数组的函数,去看看这个 食谱吧。