函数未定义Python中的错误

时间:2011-05-13 03:05:18

标签: python function

我正在尝试在python中定义一个基本函数,但是当我运行一个简单的测试程序时,我总是得到以下错误;

>>> pyth_test(1, 2)

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    pyth_test(1, 2)
NameError: name 'pyth_test' is not defined

以下是我为此功能使用的代码;

def pyth_test (x1, x2):
    print x1 + x2

更新:我有一个名为pyth.py的脚本打开,然后我在解释器中输入pyth_test(1,2)时它会给出错误。

感谢您的帮助。 (我为基本问题道歉,我以前从未编程,并且正在尝试学习Python作为一种爱好)


import sys
sys.path.append ('/Users/clanc/Documents/Development/')
import test


printline()



## (the function printline in the test.py file
##def printline():
##   print "I am working"

5 个答案:

答案 0 :(得分:36)

是的,但在pyth_test的定义中声明了什么文件?它是否也被称为它之前?

编辑:

要进行透视,请使用以下内容创建名为test.py的文件:

def pyth_test (x1, x2):
    print x1 + x2

pyth_test(1,2)

现在运行以下命令:

python test.py

你应该看到你想要的输出。现在,如果您正处于交互式会话中,它应该是这样的:

>>> def pyth_test (x1, x2):
...     print x1 + x2
... 
>>> pyth_test(1,2)
3
>>> 

我希望这能解释声明是如何运作的。


为了让您了解布局的工作原理,我们将创建一些文件。使用以下内容创建一个新的空文件夹以保持清洁:

<强> myfunction.py

def pyth_test (x1, x2):
    print x1 + x2 

<强> program.py

#!/usr/bin/python

# Our function is pulled in here
from myfunction import pyth_test

pyth_test(1,2)

现在如果你跑:

python program.py

它将打印出来3.现在解释出了什么问题,让我们以这种方式修改我们的程序:

# Python: Huh? where's pyth_test?
# You say it's down there, but I haven't gotten there yet!
pyth_test(1,2)

# Our function is pulled in here
from myfunction import pyth_test

现在让我们看看会发生什么:

$ python program.py 
Traceback (most recent call last):
  File "program.py", line 3, in <module>
    pyth_test(1,2)
NameError: name 'pyth_test' is not defined

如上所述,由于上述原因,python无法找到该模块。因此,您应该将声明保持在最顶层。

现在,如果我们运行交互式python会话:

>>> from myfunction import pyth_test
>>> pyth_test(1,2)
3

同样的过程适用。现在,包导入并不是那么简单,所以我建议您研究modules work with Python的方式。我希望这对你的学习有所帮助并祝你好运!

答案 1 :(得分:3)

它对我有用:

>>> def pyth_test (x1, x2):
...     print x1 + x2
...
>>> pyth_test(1,2)
3

确保定义之前的功能

答案 2 :(得分:1)

在python函数中,无法从各处神奇地访问函数(比如说,php)。必须首先宣布它们。所以这将有效:

def pyth_test (x1, x2):
    print x1 + x2

pyth_test(1, 2)

但这不会:

pyth_test(1, 2)

def pyth_test (x1, x2):
    print x1 + x2

答案 3 :(得分:0)

如果你展示了用于简单测试程序的代码,那将会有所帮助。直接放入解释器这似乎工作。

>>> def pyth_test (x1, x2):
...     print x1 + x2
... 
>>> pyth_test(1, 2)
3
>>> 

答案 4 :(得分:0)

如果使用IDLE安装的Python版本

>>>def any(a,b):
...    print(a+b)
...
>>>any(1,2)
3