Python 2.7与3.x中的函数

use*_*647 2 python numpy function matplotlib python-2.7

我是Python的新手.我一直在努力让自己熟悉Numpy,Scipy和Matplotlib,因为我有科学背景,并希望自己成为神经科学实验室工作的更有竞争力的候选人.

我一直在浏览Matplotlib文档,试图通过示例来学习.我将参考以下URL中的示例:http://matplotlib.org/users/pyplot_tutorial.html

我的印象是这些示例是用Python 3.x编写的,我遇到了麻烦,因为我使用的是Python 2.7.我使用的是2.7,因为我想要的一些库不适用于3.x.

该网站举了一个使用子图的例子.他们的代码如下:


import numpy as np
import matplotlib.pyplot as plt

def f(t):
    return np.exp(-t) * np.cos(2*np.pi*t)

t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)

plt.figure(1)
plt.subplot(211)
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')

plt.subplot(212)
plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
Run Code Online (Sandbox Code Playgroud)

这应该返回如下图:http: //i.stack.imgur.com/ejNDu.png


当我将相同的代码复制到IDLE时,它会给我一个错误.在线上

t1 = np.arange(0.0, 5.0, 0.1)
Run Code Online (Sandbox Code Playgroud)

,IDLE告诉我"t1"语法无效.

我的第一个问题:使用t1作为变量有什么问题?

如果我复制类似的代码,但有一些事情调整,我可以避免这个错误.但是,我会收到另一个错误.当我添加相当于的行时

plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')
Run Code Online (Sandbox Code Playgroud)

,IDLE告诉我错误:


Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    plt.plot(ty, f(tx), 'bo', ty, f(ty), 'k')
NameError: name 'f' is not defined
Run Code Online (Sandbox Code Playgroud)

我不确定Python如何期望我将"f"与函数"f(t)"分开定义.

我的第二个主要问题:有人可以解释为什么必须单独定义"f"吗?如何在Python 2.7中正确使用这样的函数?

如果有人需要我解释这里使用的Numpy/Matplotlib机制,我会尽力解释它们如何工作以实现图形.

lvc*_*lvc 5

对于语法错误,请检查之前的一两行.t1是一个完全有效的变量名称(规则类似于其他各种语言:变量名称可以包含字母,数字_,但不能以数字开头) - 但如果您忘记了上面的近距离或类似名称,那么解释器会混淆并告诉你你不能在那里有一个赋值语句(换行符不算作'语句结束',如果它们在里面(),{}或者[],或者如果换行符之前的最后一个字符是\).

定义一个函数在该命名空间为您提供一个具有该名称的变量 - 您不需要f单独定义.在没有看到确切代码的情况下很难判断,但可能发生的事情是你在不同的范围内定义它(因此名称不可见),或者你已经将函数重命名为其他东西f.