Я работаю над созданием простой программы на Python для класса, который будет работать на Raspberry Pi и Arduino для управления телескопом. Некоторое время назад я начал изучать Python, и у меня возникли проблемы с правильной работой моих функций. Прямо сейчас у меня есть это:
import ephem
def const(p, d): # find the constellation #
def loc():
sbend = ephem.Observer()
sbend.lat = '41.67'
sbend.lon = '86.26'
p = getattr(ephem, p)
p.compute(sbend)
print p.alt, p.az
o = getattr(ephem, p)
print ephem.constellation(o(d))
return loc()
const(raw_input('Planet: '), raw_input('yyyy/mm/dd: '))
Насколько я помню, функция внутри другой может вызывать переменную из родителя. Может ли это работать и наоборот, как у меня в конце? Я хотел бы иметь возможность распечатать созвездие (которое работает), а также высоту и азимут планеты на основе жестко заданного местоположения. По какой-то причине он не вычисляет высоту и азимут. Мысли?
ИЗМЕНИТЬ
Я добавил return loc()
в строке 14.
Я больше читал, и в некоторых других потоках говорилось, что для доступа к внутренней функции ее нужно вернуть в конце родителя. Но это все еще не работает для меня.
loc()
, но я не вижу, чтобы вы использовали ее где-либо. Итак, прежде чем я пойду дальше: есть ли какой-либо код, который вы случайно пропустили, когда вставляли этот код? - person Brandon Rhodes   schedule 09.10.2013return loc
— вместо этого, говоряreturn loc()
, вы сначала сами вызываетеloc()
, чтобы получить возвращаемое значение (которое будетNone
, посколькуloc()
не содержит оператораreturn
), затем вы возвращаете это значениеNone
в качестве возвращаемого значенияconst()
. - person Brandon Rhodes   schedule 09.10.2013