Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295

Запуск функции с параметром

04.02.2018, 13:24. Показов 1138. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
добрый день. есть такая структура кода
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def fun1(x):
    print(x)
 
def fun2(x):
    print(x)
 
def fun3(x):
    print(x)
 
 
dct = {1: (fun1,'fun1'),2: (fun2,'fun2'),3: (fun3,'fun3')}
 
for _ in range(6):
     func,arg = dct[int(input())]
     func(arg)
как в словаре задать вызов функции с заданным там же параметром через лямбда функцию то есть исключить этот велосипед func(arg)?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.02.2018, 13:24
Ответы с готовыми решениями:

Запуск приложения из его папки с параметром
Как можно запустить внешнюю программу с параметром находясь в папке этой программы? пытаюсь так: #os.system(r'cd C:/"Program...

Запуск программы с параметром
Люди, где собака зарыта? Не понимаю. #include <cstdlib> #include <stdio.h> #include <errno.h> #define BUF_SIZE 256 using...

Запуск exe с параметром
Доброго времени! Вопрос, скорей всего неоднократно обсуждался, но все же, проблема в следующем: как запускать .exe файл с параметрами?

6
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
04.02.2018, 13:54
Semen-Semenich, так правильней
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def fun1(x):
    print(x)
 
 
def fun2(x):
    print(x)
 
 
def fun3(x):
    print(x)
 
 
funcs = {'1': lambda: fun1('fun1'), '2': lambda: fun2('fun2'), '3': lambda: fun3('fun3')}
 
for _ in range(6):
    try:
        funcs[input()]()
    except KeyError:
        print('Нет такой функции')
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
04.02.2018, 16:10
Semen-Semenich,
Есть еще partial из functools - для создания каррированых функций.
Python
1
2
3
4
5
6
7
8
9
10
11
12
funcs = {'1': partial(fun1,'fun1'), '2': partial(fun2,'fun2'), '3': partial(fun3,'fun3')}
 
funcs = {'1': partial(fun1,'fun1'), '2': partial(fun2,'fun2'), '3': partial(fun3,'fun3')}
 
for _ in range(6):
    try:
        # так как функция каррирована -  аргумент будет использован по умолчанию
        funcs[input(">")]()  
        # а если определить параметры в func как  *x, то можно передавать дополнительные аргументы
        #funcs[input(">")](_)
    except KeyError:
        print('Нет такой функции'')
1
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
04.02.2018, 16:28  [ТС]
alex925, спасибо. я сам прозевал скобки в funcs[input()]() поэтому ничего не вышло сразу Garry Galler, ваш вариант тоже неплохой даже намного удобней чем лямбда
0
97 / 97 / 38
Регистрация: 30.11.2017
Сообщений: 180
04.02.2018, 16:56
Garry Galler, почему-то с ошибкой вылетает

File "<string>", line 3, in <module> NameError: name 'fun1' is not defined
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
04.02.2018, 17:42
Zedta,
Так функции должны быть изначально определены - как в первом посте у Semen-Semenich.
partial просто создает из обычной функции - частичную - с "замороженным" аргументом.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
05.02.2018, 00:13
Цитата Сообщение от alex925 Посмотреть сообщение
Semen-Semenich, так правильней
можно наверное еще вынести лямбду из словаря

Python
1
2
3
4
5
6
7
8
9
def fun1(x): print(x)
def fun2(x): print(x)
def fun3(x): print(x)
 
 
lst = [(fun1, 'fun1'), (fun2, 'fun2'), (fun3, 'fun3')]
 
runner = lambda x, y: x(y)
runner(*lst[int(input())-1])
Добавлено через 16 минут
Внимание всем, кто читает это сообщение, - дальнейший текст нужно воспринимать, как шутку, триггериться ваще не нужно.

Python
1
2
3
4
5
6
7
import sys
 
def fun1(): print(sys._getframe().f_code.co_name)
def fun2(): print(sys._getframe().f_code.co_name)
def fun3(): print(sys._getframe().f_code.co_name)
 
globals()['fun'+input()]()
Внимание всем, кто читает это сообщение, - прочитанный текст нужно воспринимать, как шутку, триггериться ваще не нужно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.02.2018, 00:13
Помогаю со студенческими работами здесь

Запуск exe с параметром
Добрый день! Подскажите как запустить не просто файл, а с командной строкой? Пробую вот так: filePath =...

Запуск Builder с параметром
Доброго времени суток. Подскажите, имеет ли builder c++ параметры запуска? Хочу запускать его с параметром, что бы он собирал проект в...

Запуск приложения с параметром
Нужен срочный хелп. Нужно из ярлыка на рабочем столе запустить прогу с exe файла и подцепить как параметр определенный ini файл как нужно...

Запуск exe с параметром
Драсте все! есть фаил hl-origenal.exe мне надо его запустить с параметром -game cstrike +connect 188.64.170.134:27061 Подскажите...

Запуск программы с параметром.
Надо сделать так если программа запущена с параметром -admin тогда написать доступ открыт. Как это сделать? #include&lt;iostream&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru