Как передать переменную из одной функции в другую python
Перейти к содержимому

Как передать переменную из одной функции в другую python

  • автор:

Как передать переменную из одной функции в другую 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 @yupiter7575
Python программист
return либо через ооп
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать

MinTnt

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 вместо операторных скобок используются отступы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *