繁体   English   中英

Python 2.7与3.x中的函数

[英]Functions in Python 2.7 vs 3.x

我是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--')

应该返回这样的图形: http : //i.stack.imgur.com/ejNDu.png


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

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

,IDLE告诉我“ t1”是无效的语法。

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

如果我以类似的代码进行复制,但做了一些调整,则可以避免此错误。 但是,然后我遇到另一个错误。 当我添加等效于

plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')

,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

我不确定Python如何期望我与函数“ f(t)”分开定义“ f”。

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

如果有人需要我解释这里使用的Numpy / Matplotlib机制,我将尽力解释它们如何产生图形。

对于语法错误,请在之前检查一两行。 t1是一个完全有效的变量名(规则类似于其他各种语言:变量名可以包含字母,数字和_ ,但不能以数字开头)-但是,如果您忘记了上面的右括号或类似的内容,则解释器会感到困惑,并告诉您那里没有赋值语句(如果换行符位于(){}[] ,或者如果之前的最后一个字符不包含在换行符中,则不会被视为“语句的结尾”换行符是\\ )。

定义一个函数确实会为您提供该名称空间中具有该名称的变量-您无需单独定义f 看不到确切的代码很难分辨,但是可能发生的情况是您在另一个范围内定义了它(因此名称不可见),或者您已将函数重命名为f以外的名称。

尝试在新窗口中再次键入所有内容。 'f'不应单独定义。

由于缺少新行和意外缩进,导致出现无效语法错误。

在IDLE中,在定义函数f(t)之后,您必须再次按<return>键以完成f(t)的声明-在f(t)的声明之后放置一个空行。 如果您未在IDLE中添加该新行,则会出现语法错误,因为意外的缩进和f(t)的定义将不会完成,因此您还会收到下一个错误,提示“ f ' 没有定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM