Как передать переменную из одной функции в другую python
В Python функция фактически представляет отдельный тип. Так мы можем присвоить переменной какую-нибудь функцию и затем, используя переменную, вызывать данную функцию. Например:
def say_hello(): print("Hello") def say_goodbye(): print("Good Bye") message = say_hello message() # Hello message = say_goodbye message() # Good Bye
В данном случае переменной message присваивается одна из функций. Сначала ей передается функция say_hello() :
message = say_hello
После этого переменная message будет указывать на данную функцию, то есть фактически представлять функцию say_hello. А это значит, что мы можем вызывать переменную message как обычную функцию:
message() # Hello
Фактически это приведет к выполнению функции say_hello, и на консоль будет выведена строка «Hello». Затем подобным образом мы можем передать переменной message другую функцию и вызвать ее.
Подобным образом можно через переменную вызывать функцию с параметрами и возвращать ее результат:
def sum(a, b): return a + b def multiply(a, b): return a * b operation = sum result = operation(5, 6) print(result) # 11 operation = multiply print(operation(5, 6)) # 30
Функция как параметр функции
Поскольку функция в Python может представлять такое же значение как строка или число, соответственно мы можем передать ее в качестве параметра в другую функцию. Например, определим функцию, которая выводит на консоль результат некоторой операции:
def do_operation(a, b, operation): result = operation(a, b) print(f"result = ") def sum(a, b): return a + b def multiply(a, b): return a * b do_operation(5, 4, sum) # result = 9 do_operation(5, 4, multiply) # result = 20
В данном случае функция do_operation имеет три параметра, причем третий параметр, как предполагается, будет представлять функцию, которая принимает два параметра и возвращает некоторый результат. Иными словами третий параметр — operation представляет некоторую операцию, но на момент определения функции do_operation мы точно не знаем, что это будет за операция. Мы только знаем, что она принимает два параметр и возвращает какой-то результат, который потом выводится на консоль.
При вызове функции do_operation мы сможем передать в качестве третьего параметра другую функцию, например, функцию sum:
do_operation(5, 4, sum)
То есть в данном случае параметр operation фактически будет представлять функцию sum и будет возвращать сумму дву чисел.
Затем аналогичным образов в вызов функции do_operation можно передать третьему параметру другую функцию — multiply, которая выполнит умножение чисел:
do_operation(5, 4, multiply) # result = 20
Таким образом, более гибкие по функциональности функции, которые через параметры принимают другие функции.
Функция как результат функции
Также одна функция в Python может возвращать другую функцию. Например, определим функцию, которая в зависимости от значения параметра возвращает ту или иную операцию:
def sum(a, b): return a + b def subtract(a, b): return a - b def multiply(a, b): return a * b def select_operation(choice): if choice == 1: return sum elif choice == 2: return subtract else: return multiply operation = select_operation(1) # operation = sum print(operation(10, 6)) # 16 operation = select_operation(2) # operation = subtract print(operation(10, 6)) # 4 operation = select_operation(3) # operation = multiply print(operation(10, 6)) # 60
В данном случае функция select_operation в зависимости от значения параметра choice возвращает одну из трех функций — sum, subtract и multiply. Затем мы мы можем получить результат функции select_operation в переменную operation:
operation = select_operation(1)
Так, в данном случае в функцию select_operation передается число 1, соответственно она будет возвращать функцию sum. Поэтому переменная operation фактически будет указывать на функцию sum, которая выполняет сложение двух чисел:
print(operation(10, 6)) # 16 - фактически равно sum(10, 6)
Аналогичным образом можно получить и выполнить другие функции.
Как передать значение переменной из одной функции в другую?
Вот неверный код. Необходимо чтобы после запуска def one произошло чудо и print напечатал единицу из функции def two.
def one(): print(SIGNAL) def two(): SIGNAL = 1 one()
- Вопрос задан более двух лет назад
- 3744 просмотра
Комментировать
Решения вопроса 0
Ответы на вопрос 2

Yupiter7575 @yupiter7575
Python программист
return либо через ооп
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать

Python имеет различные способы для упрощения взаимодействия с переменными. К примеру из простых.
1). Добавить в первую функцию позиционные аргументы, а во вторую добавить return нужных данных.
2). Создать класс
3). Создать функцию, как объединяющую все остальные.
def m(): def one(): print(m.SIGNAL) def two(x): m.SIGNAL = x m.one = one m.two = two m() m.two('Test') m.one()
Можно сказать, почти те же классы, но которые не привязаны к каждой отдельной переменной. Только для начала использования подаргумментов, нужно обьязательно хоть единожды, но вызвать её.
4). Использовать setattr(self, Name, value). Или же, object.__setattr__(Name, value)
Как передать переменную из одной функции в другую?
суть вопроса заключается в том, каким образом я могу передать переменную которая хранит имя базы данных в разные функции, именно передавать ее.
вот код подключения основной функции, здесь я напрямую вызываю и храню в переменной значение
def connect(): name_DB = filedialog.askopenfilename(filetypes=(("Database", ".db"),)) return name_DB def download(): # подключение к бд lite=connect(shit) print(lite) sqlite_connection = sqlite3.connect(lite) .
а как мне передать это значение в другую функцию, чтобы не открывать по 10 раз диалоговое окно? потому что данная функция работает по клику. было б вообще отлично если подключить бд и она работала б фоновом режиме все время работы программы, но нужно знать ее имя для передачи каким то способом в функции
def on_select(event): #print(tree.selection()) # Если привязывались не к событию >, # то тут нужно проверить, что вообще что-то выбрано: if not tree.selection(): return # Получаем id первого выделенного элемента selected_item = tree.selection()[0] # Получаем значения в выделенной строке values = tree.item(selected_item, option="values") print(values[0])
и мне этот values[0] нужен для вставки в sql запрос, а чтобы это сделать нужно подключиться к бд, а для этого нужно имя ее передать в эту функцию, делать диалоговое окно при запуске программы(т.е. глобальным ) не вариант
- Вопрос задан более двух лет назад
- 3264 просмотра
1 комментарий
Простой 1 комментарий
Передача переменных из функции python
Чтобы передать аргумент в другую функцию, она должна как минимум его принимать. Можно из первой функции вызвать вторую с нужным аргументом.
def Func1(): var1 = 'data' Func2(var1) def Func2(var1): print(var1) Func1()
Ещё первая функция может вернуть значение с помощью return. Это самое значение можно сразу передать в вызов второй функции, не создавая глобальных переменных.
def Func1(): var1 = 'data' return var1 def Func2(var1): print(var1) Func2(Func1())
P.S. В Python вместо операторных скобок используются отступы.