Да, но в каком файле объявлено определение 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'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
Применяется тот же процесс. Теперь импорт пакетов не так прост, поэтому я рекомендую вам посмотреть, как модули работают с Python . Я надеюсь, что это поможет и удачи в изучении!