Как передать функцию как параметр в Python?
Поскольку функция в Python является объектом, ее можно передавать в другую функцию в качестве аргумента. При этом функция в аргументе указывается без круглых скобок, то есть передается только ссылка на функцию.
def calculate(a, b, operation): result = operation(a, b) return result def sum(a, b): return a + b def multiply(a, b) return a * b calculate(2, 3, sum) # 5 calculate(3, 4, multiply) # 12
Функции, которые могут принимать другие функции в качестве аргументов, также называются функциями высшего порядка. Яркий пример функции высшего порядка — функция map() , которая принимает аргументом функцию и итерируемую последовательность, и применяет функцию-параметр к каждому элементу последовательности.
Передать в функцию словарь

У меня есть функция, внутри которой юзер вводит название изменяемоего словаря/списка. Ввод производится в переменную list_name. В другую функцию нужно передать этот словарь/список для дальнейшего изменения. Как в функцию передать именно словарь/список название которого находится в переменной list_name?
| Здесь вы можете заказать любую студенческую или школьную работу. |
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как передать словарь в шаблон?
Мой словарь Фрагмент шаблона score_dict — сам словарь, который я уже передал в функцию render .
Как передать в функцию ссылку словарь?
Здравствуйте, имеется var reports = new Dictionary<string, ReportRecord>() словарь reports и я.
Передать словарь из одного окна в другое
Добрый день! Только начинаю изучать WPF и язык. Столкнулась с такой проблемой: есть MainWindow.
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,241
Если список названий словарей известен заранее, то так можно:
1 2 3 4 5 6 7 8 9 10 11 12
dictionaries = {'first_dictionary': {1:1}, 'second_dictionary': {1:2}} def change_dict(dictionary_name): try: dictionaries[dictionary_name][1] = 'abracadabra' except KeyError: print("Hm?") list_name = input("Input list_name") change_dict(list_name) print(dictionaries)
Регистрация: 16.08.2016
Сообщений: 5
Сообщение от Kifsif 
Если список названий словарей
А как поступить со списками?
Добавлено через 2 минуты
Сообщение от Kifsif 
dictionaries = <'first_dictionary': <1:1>, ‘second_dictionary’: >'first_dictionary':>
У меня со словарями/списками все намного сложнее, просто так объединить их в один словарь не получится. Но все равно спасибо, попробую что-нибудь поменять.
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,241
Сообщение от CannonMeat 
А как поступить со списками?
У тебя где-то тут в глобальная проблема на уровне архитектуры. Слишком накручено.
Если ты объединишь словари и списки в одно целое, больше исключений придется ловить. Теоретически возможно, но как рефакторить потом, поддерживать этот код?
Регистрация: 16.08.2016
Сообщений: 5
Сообщение от Kifsif 
тебя где-то тут в глобальная проблема на уровне архитектуры. Слишком накручено.
Ну у меня есть 1 словарь (строка-строка) и 2 списка: оба со строками., которые выводятся при определенных условиях.
А функция нужна, чтобы добавлять в них что-то новое. Как это можно изменить, чтобы код, который вы привели выше работал, я не знаю
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Все имена глобальных переменных можно доставать из словаря globals():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
a = {"1":1} b = [0,1] def test(): name = input() data = globals().get(name) if data is None: return print('Varibale not found') else: test2(data) def test2(data): if isinstance(data,dict): data['2'] = 2 print(data) elif isinstance(data,list): data.append(2) print(data) else: print('Unknown type') test() #>> #a # test() #>> #b #[0, 1, 2]
Но как и написал Kifsif, проблема с архитектурой кода у вас есть и приведенное мной решение не тот путь, которым нужно идти.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Ввести с клавиатуры 3 словосочетания и передать их по порядку в функцию. Используя функцию удалить
Ввести с клавиатуры 3 словосочетания и передать их по порядку в функцию. Используя функцию удалить.

Написать функцию, которая могла бы передать значение в другую функцию
как сделать функцию которая бы могла передать значеие в другую функцию ну к примеру a=4*b; где.
Как правильно передать вектор в функцию и вызвать эту функцию?
Здравствуйте, объясните как исправить ошибку. Возникает после for(), выдается, что размер polygon =.

Как передать функцию из класса в другую функцию (в качестве параметра)?
У меня есть такой класс: Class a < static public function sum($a, $b) < return $a+$b; >.

Как передать функцию из другого класса в функцию glutSpecialFunc() которая находится в main?
В программе которая двигает нарисованную мною фигуру в OpenGl, есть функция регистрации нажатия.
Или воспользуйтесь поиском по форуму:
python: передача в функции параметров в виде словаря и добавление своих значений
подскажите как компактно, красиво и корректно передать в функцию параметры, содержащиеся в словаре + добавить свои параметры если над просто передать значения, то проблем нет:
data = < 'v1': 123, 'v3': 3.1415, 'v2': 'abc' >def func(v1, v2, v3): print(v1, v2, v3, sep='\n') func(**data)
а как быть, если я хочу заменить одно значение другим или добавить новое? в JavaScript можно делать так:
а какой-нибудь короткий и красивый аналог в питоне есть?
Отслеживать
задан 18 мая 2023 в 7:16
37.4k 4 4 золотых знака 28 28 серебряных знаков 74 74 бронзовых знака
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Можете просто добавить именованный аргумент перед словарем **kwargs :
kw = def myfunc(**kwargs): print(kwargs) myfunc(**kw) # myfunc(c=3, **kw) # mydict = myfunc(**mydict, **kw) #
для замены значения можно так:
myfunc(**dict(kw, a=100)) #
Отслеживать
ответ дан 18 мая 2023 в 7:37
25.5k 4 4 золотых знака 21 21 серебряный знак 36 36 бронзовых знаков
да, вариант работает, причем не важно перед или после ставить новый параметр (вроде как проверил — оба варианта прошли), но вот как быть когда надо ЗАМЕНИТЬ параметр? т.е. в словаре уже есть такой параметр, условно **<'a': 1, 'b': 2>, b=2 — получается ошибка got multiple values for keyword argument , поэтому и привел способ из JS — там это происходит автоматически — если был старый параметр СЛЕВА, то он заменится на параметр, который указан СПРАВА, что очень удобно и компактно'a':>
Как передать параметры в виде словаря в функцию?
Суть: Нужна возможость использовать функцию как самостоятельно (просто передать в нее параметры), так и внутри большой функции (передать в большую функцию список словарей, чтобы рабочая функция «съела» ключи как параметры).
Вопрос: Есть ли возможность передать в функцию список словарей, чтобы она нашла соответствия своих параметров в ключах словаря? Или же, обработать словарь перед подачей в функцию, чтобы он передался не в формате «ключ:значение», а формате «ключ=значение»?
Пример кода:
subparams = [< 'param1': 12, 'param2': 'smth' >, < 'param1': 15, 'param3': 2535 >] # Большая функция def main_function(main_param, subparams): # Тут что-то происходит # Прохожусь по словарям в списке for sub in subparams: # Передаю словарь в функцию subfunction(sub) # Что-то возвращается # Рабочая функция def subfunction(param1=1, param2='', param3=1000): # Тут тоже что-то происходит и возвращается
Если есть более адекватное решение или я упускаю какую-то важную деталь — буду благодарен за любой совет 🙂
- Вопрос задан более трёх лет назад
- 507 просмотров