Ответ 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. Надеюсь, это поможет и удачи в ваших учениях!