Как передать переменную из одной функции в другую python
В Python функция фактически представляет отдельный тип. Так мы можем присвоить переменной какую-нибудь функцию и затем, используя переменную, вызывать данную функцию. Например:
В данном случае переменной message присваивается одна из функций. Сначала ей передается функция say_hello() :
После этого переменная message будет указывать на данную функцию, то есть фактически представлять функцию say_hello. А это значит, что мы можем вызывать переменную message как обычную функцию:
Фактически это приведет к выполнению функции say_hello, и на консоль будет выведена строка «Hello». Затем подобным образом мы можем передать переменной message другую функцию и вызвать ее.
Подобным образом можно через переменную вызывать функцию с параметрами и возвращать ее результат:
Функция как параметр функции
Поскольку функция в Python может представлять такое же значение как строка или число, соответственно мы можем передать ее в качестве параметра в другую функцию. Например, определим функцию, которая выводит на консоль результат некоторой операции:
В данном случае функция do_operation имеет три параметра, причем третий параметр, как предполагается, будет представлять функцию, которая принимает два параметра и возвращает некоторый результат. Иными словами третий параметр — operation представляет некоторую операцию, но на момент определения функции do_operation мы точно не знаем, что это будет за операция. Мы только знаем, что она принимает два параметр и возвращает какой-то результат, который потом выводится на консоль.
При вызове функции do_operation мы сможем передать в качестве третьего параметра другую функцию, например, функцию sum:
То есть в данном случае параметр operation фактически будет представлять функцию sum и будет возвращать сумму дву чисел.
Затем аналогичным образов в вызов функции do_operation можно передать третьему параметру другую функцию — multiply, которая выполнит умножение чисел:
Таким образом, более гибкие по функциональности функции, которые через параметры принимают другие функции.
Функция как результат функции
Также одна функция в Python может возвращать другую функцию. Например, определим функцию, которая в зависимости от значения параметра возвращает ту или иную операцию:
В данном случае функция select_operation в зависимости от значения параметра choice возвращает одну из трех функций — sum, subtract и multiply. Затем мы мы можем получить результат функции select_operation в переменную operation:
Так, в данном случае в функцию select_operation передается число 1, соответственно она будет возвращать функцию sum. Поэтому переменная operation фактически будет указывать на функцию sum, которая выполняет сложение двух чисел:
Передача переменных из функции python
Ребята подскажите реально ли передать переменную из функции в другую функцию python? Пример:
Реально ли реализовать такую штуку как нибудь, без глобальных переменных?
Чтобы передать аргумент в другую функцию, она должна как минимум его принимать. Можно из первой функции вызвать вторую с нужным аргументом.
Ещё первая функция может вернуть значение с помощью return. Это самое значение можно сразу передать в вызов второй функции, не создавая глобальных переменных.
P.S. В Python вместо операторных скобок используются отступы.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как передать значение переменной из одной функции в другую?
Вот неверный код. Необходимо чтобы после запуска def one произошло чудо и print напечатал единицу из функции def two.
- Вопрос задан более года назад
- 2744 просмотра
- Вконтакте
- Вконтакте
Python имеет различные способы для упрощения взаимодействия с переменными. К примеру из простых.
1). Добавить в первую функцию позиционные аргументы, а во вторую добавить return нужных данных.
2). Создать класс
3). Создать функцию, как объединяющую все остальные.
Можно сказать, почти те же классы, но которые не привязаны к каждой отдельной переменной. Только для начала использования подаргумментов, нужно обьязательно хоть единожды, но вызвать её.
4). Использовать setattr(self, Name, value). Или же, object.__setattr__(Name, value)
Python: передача переменных между функциями
Я потратил последние несколько часов на чтение здесь и в другом месте, а также экспериментировал, но я не совсем понимаю, что я уверен, это очень простая концепция: передача значений (как переменных) между различными функциями.
Например, я назначаю целую кучу значений списку в одной функции, а затем хочу использовать этот список в другой функции позже:
Основываясь на моем понимании аргументов функции, я бы ожидал, что это будет делать следующее:
- Инициализировать «список» как пустой список; call main (это, по крайней мере, я знаю, что я прав. )
- В пределах defineAList() назначьте определенные значения в список; затем переведите новый список обратно в main()
- В main() вызовите useTheList (список)
- Поскольку «список» включен в параметры функции useTheList, я бы ожидал, что useTheList теперь будет использовать список, как определено defineAList(), а не пустой список, определенный перед вызовом main.
Однако это, очевидно, ошибочное понимание. Мой выход:
Итак, поскольку «возврат», очевидно, не делает то, что я думаю, что он делает, или, по крайней мере, это не так, как мне кажется, это должно. что это на самом деле делает? Не могли бы вы показать мне, используя этот пример, что мне нужно сделать, чтобы взять список из defineAList() и использовать его в useTheList()? Я стараюсь лучше понимать вещи, когда вижу, что они происходят, но многие примеры правильной передачи аргументов, которые я видел, также используют код, который мне еще не знаком, и в процессе выяснения того, что происходит, я «На самом деле я не разбираюсь в этой концепции. Я использую 2.7.
ETA — в прошлом, задавая аналогичный вопрос, было предложено использовать глобальную переменную вместо локальных. Если это будет уместно и здесь — для целей класса, который я принимаю, нам не разрешено использовать глобальные переменные.