Подтвердить что ты не робот

Функция не определена ошибка в Python

Я пытаюсь определить базовую функцию в 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

UPDATE: у меня есть script, называемый pyth.py open, а затем я набираю 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"
4b9b3361

Ответ 1

Да, но в каком файле указано определение pyth_test? Он также расположен до его вызова?

Edit:

Чтобы представить его в перспективе, создайте файл с именем 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 pyth_test?
# You say it 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

Тот же процесс применяется. Теперь импорт пакетов не так уж и прост, поэтому я рекомендую вам изучить, как модули работают с Python. Надеюсь, это поможет и удачи в ваших учениях!

Ответ 2

Это работает для меня:

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

Убедитесь, что вы определяете функцию до, которую вы вызываете.

Ответ 3

В функциях 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

Ответ 4

Это поможет, если вы покажете код, который вы используете для простой тестовой программы. Помещенный непосредственно в интерпретатор, это, кажется, работает.

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

Ответ 5

если вы работаете с установленной версией Python с помощью IDLE

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