Как уже сказал, это звучит, как вы пытаетесь решить что-то, что было бы лучше сделать по-другому (см XY problem )
Если привет и пока вам нужны разные типы данных, вам может быть лучше использовать класс.Пример:
class MyGreetings(object):
hello = [1, 2, 3]
def hi(self):
print('hello')
def bye(self):
print(self.hello)
Вы также можете сделать это с глобалов:
global hello
def hi():
global hello
hello = [1,2,3]
print("hello")
def bye():
print(hello)
или при наличии привет возвращают значение:
def hi():
hello = [1,2,3]
print("hello")
return hello
def bye():
hello = hi()
print(hello)
или вы могли бы привет поместить привет на функцию привет само по себе:
def hi():
hello = [1,2,3]
print("hello")
hi.hello = hello
def bye():
hello = hi.hello
print(hello)
Теперь, когда s помощь, беглый способ сделать то, что вы просите бы вытащить исходный код привет(), и выполнить тело функции в пределах до свидания(), а затем вытащить переменную поздоровался:
import inspect
from textwrap import dedent
def hi():
hello = [1,2,3]
print("hello")
def bye():
sourcelines = inspect.getsourcelines(hi)[0]
my_locals = {}
exec(dedent(''.join(sourcelines[1:])), globals(), my_locals)
hello = my_locals['hello']
print(hello)
как он говорит, 'hello' - это имя (переменная чтения), локальное для функции' hi'. Лучший способ, из того, что я вижу, - назначить 'hello' в глобальном пространстве (т. Е. Вы вызываете функции) и передать такую переменную как параметр для функций. Или, как предложено ниже, давайте 'hi' return' hello' – Pynchia
, вы не можете решить эту проблему, локальная переменная в функцию не может быть видна в другом: это все интерес к локальным переменным! –
Я считаю, что это проблема [XY] (http://xyproblem.info/), поскольку то, что вы пытаетесь, не соответствует какой-либо хорошей практике. Чего вы пытаетесь достичь? В чем причина желания выполнять такое нечетное кодирование? – Pynchia