2015-03-11 2 views
0

как темы: как вы импортируете/ссылаетесь на другую уже написанную (внешнюю) программу в основной программе?Проблемы с вызовом функции - «не определено»

, если у меня есть файл с именем Squares.py с этим внутри него:

def squares(x): 
    for i in x: 
     return i*i 
squares(x) 

... как я могу сказать, зонтик программу для ссылки на нее? Использовать ли команду импорта в верхней части служебной программы? Как мне написать?

+0

Используйте «из квадратов импорта квадратов», чтобы импортировать квадраты из файла Squares.py. – dgsleeps

+0

. Изобретая свой собственный жаргон (внешняя программа, программа зонтика, служебная программа), ваш вопрос трудно понять. –

+0

Извините, поскольку я изучаю соответствующий жаргон, Я попытаюсь использовать его в будущем. –

ответ

1

Вы не сможете import Squares потому x не определен на последней строке

def squares(x): 
    for i in x: 
     return i*i 
squares([23]) 

Вы должны решить эту проблему первый

Сама функция, вероятно, не делать то, что вы хотеть. Предполагается, что x должен быть list или int или что-то еще?

Предположив вы исправить эти проблемы, вы должны изолировать нижнюю часть с помощью теста

def squares(x): 
    for i in x: 
     return i*i 
if __name__ == "__main__": 
    squares([23]) 

Это предотвратит squares вызывается неявно при импорте модуля

Вы тогда сможете просто использование:

import Squares 
result = Squares.square([23]) 

или

from Squares import square 
result = square([23]) 
+0

Можете ли вы, пожалуйста, пройти меня по первой проблеме, о которой вы упомянули? –

+0

Я очень ценю всю помощь. Я добавлю это в качестве своего принятого ответа, но я все еще не могу понять, что это правильно. У меня есть более привлекательная тема по адресу http://stackoverflow.com/questions/29000097/need-help-calling-a-function-into-a-different-file-python, где я надеюсь получить это исправление. –

0

Модуль squares.py, который вы показываете, сломан - при его запуске или импортировании он умрет с исключением, потому что он вызывает squares с неопределенной глобальной переменной x.

Предполагая, что вы имели модуль, который не сломана, и он живет в каталогах, перечисленных на sys.path, затем

import squares 

в верхней части другого файла Python будет импортировать squares как модуль в другой Файл Python.

+0

Я получаю: имя «х» не определено ... Я предполагаю, что это то, что вы подразумеваете под сломанным.Что я могу сделать, чтобы исправить это? –

+0

@evambivalence, если вы хотите называть 'квадраты (x)', вы ** имеете ** знать, что означает 'x', нет ?! Итак, ** скажите ** Python, что это, например, 'x = [23]' перед этим вызовом 'squares (x)'. (Эта функция «квадраты», несмотря на вводящее в заблуждение имя, возвращает только единичный квадрат первого элемента в его аргументе списка, конечно - это еще одна проблема). –

+0

Я стараюсь следовать вашим советам, но не преуспеваю. Я поставил 'x = [23]' ниже определения, но выше строки 'for i in x'. Затем я вызывал эту программу в служебной программе с помощью 'squareslist = square (x)' где x - список, который я использую. –

Смежные вопросы