Я пытаюсь установить локальную переменную в main()
из insideFCT()
, которая начинается в main()
:Установить/получить доступ к локальной переменной из функции в функции?
def insideFCT():
print "inside"
info = datetime.datetime.now()
print info
def main():
print "starting main"
insideFCT()
functionThatPrint(info) #for the example functionThatPrint() acts like print()
main()
мне нужно найти способ, так что это дает мне:
starting main
inside
2013-09-19...
2013-09-19...
- I не может изменять
main()
(это означает, что я не могу добавить «info = insideFCT()» и добавить возврат кinsideFCT()
) - Я не могу использовать глобальные переменные потому что функция будет использовать несколько раз, в то же время (нити)
- Конечно, это вовсе не о том, чтобы время,
datetime.datetime.now()
представляет собой вход Я не могу контролировать
Моя идея чтобы найти что-то конкретное для каждого main()
, когда они начинаются, сохраните «info» в глобальной dictionnary как globDict[TheThingSpecific]=info
, а затем я могу получить его с помощью globDict[TheThingSpecific]
в functionThatPrint()
(Действительно, functionThatPrint()
вызывается той же функцией, что и insideFCT()
, поэтому они имеют одинаковые «конкретные вещь ")
Я только что нашел« что-то конкретное », Я искал. Это threading.current_thread()
РЕШЕНИЕ:
insideFCT()
магазины Информация вglobalDict[str(threading.current_thread())]
- тогда я могу получить доступ к нему в
functionThatPrint()
использованием той же линии, потому что это тот же самый поток:globalDict[str(threading.current_thread())]
Почему у вас есть эти ограничения? – alecxe
Почему вы не можете передать информацию основному методу? – Rami
@alecxe это часть моего проекта, первое ограничение состоит в том, что main будет создан другими людьми, и я хочу, чтобы он был как можно более простым (даже если «insideFCT» - настоящий беспорядок). И другие, я думаю, я уже объяснил это. – elbajo