|
0 / 0 / 0
Регистрация: 17.04.2020
Сообщений: 6
|
||||||
Обратиться к функции через значение строки16.06.2020, 18:48. Показов 1665. Ответов 18
Метки нет (Все метки)
Добрый день. Я только недавно начал учить python. И у меня одна мысль появилась. Можно ли обратиться к функции через значение строки?
0
|
||||||
| 16.06.2020, 18:48 | |
|
Ответы с готовыми решениями:
18
Как обратиться к классу через значение переменной? Можно ли обратиться из процедуры или функции к переменной, значение которой было передано в параметрах?
|
|
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
|
||||||
| 16.06.2020, 19:16 | ||||||
0
|
||||||
|
0 / 0 / 0
Регистрация: 17.04.2020
Сообщений: 6
|
|
| 16.06.2020, 19:23 [ТС] | |
|
Vigi, Я немного другое хотел. Вызвать через строку функцию. Чтобы строка 'qwer' превратилась в функцию
0
|
|
|
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
|
||||||
| 16.06.2020, 19:46 | ||||||
0
|
||||||
| 16.06.2020, 22:06 | ||||||||||||||||||||||||||
Сообщение было отмечено sergii_bah как решение
Решение
sergii_bah, Можно через eval , только нужно вот так
То же самое, через подстановку имени строки созданной заранее.
А можно так
0
|
||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 17.04.2020
Сообщений: 6
|
|
| 17.06.2020, 13:52 [ТС] | |
|
Viktorrus, Благодарю, всё работает^_^
0
|
|
| 17.06.2020, 18:02 | |||||||||||
|
sergii_bah, Коль уж зашел разговор о функциях eval и exec, скажу, почему я предпочитаю exec. С помощью функции exec можно динамически создавать новые переменные
0
|
|||||||||||
|
|
||
| 17.06.2020, 18:29 | ||
|
Viktorrus, вовсе нет. Скорее, это вы шутить изволите.
Для всякой задачи нужен минимальный инструмент, чтобы не переусложнять. В данном случае, минимум - это класс+getattr. Добавлено через 1 минуту ![]() С помощью exec можно многое сделать. Выстрелить себе в ногу, например, путём создания абсолютно нечитаемого и неконтролируемого кода.
0
|
||
| 17.06.2020, 18:34 | |
|
dondublon, Человек написал, что только начал изучать питон, а Вы предлагаете использовать класс. И может быть даже придется использовать __getattr__. Однако интересно, как Вы реализуете данную задачу с помощью класс + getattr ?
0
|
|
|
|
||||||
| 17.06.2020, 18:41 | ||||||
|
Viktorrus, класс - это элементарная конструкция, которая изначально придумана (кто бы мог подумать!) для упрощения кода. Да, конечно, я предлагаю его использовать.
Не понимаю, что тут может быть интересного, вы-то про классы и getattr точно в курсе, но извольте:
Добавлено через 1 минуту Viktorrus, класс нужен - именно для начинающего. Потому что дальше он начнёт в своих module-level functions использовать глобальные переменные, потом динамически их создавать, и покатится по наклонной.
0
|
||||||
| 17.06.2020, 18:42 | ||||||
|
dondublon, Вы наверное имели ввиду модуль а не класс?
Хотя я вроде втянулся в бесполезную дискуссию. Удачи.
0
|
||||||
| 17.06.2020, 18:53 | |
|
Не видел Что Вы уже дали пример. Но мой пример в 2-3 строки мне приятнее
Вы пишите как Вам нравится, я буду писать как мне нравится, а ТС будет делать как ему нравится. Он ведь не на вас работает? Поэтому имеет право выбора.![]() Добавлено через 4 минуты dondublon, А я вот не поленился и запустил Ваш пример. Он вообще не рабочий и выдает ошибку. В моем же примере трудно сделать ошибку. Я уж не говорю о том, каково в Вашем примере разобраться начинающему изучать питон.
0
|
|
|
|
|||||||||
| 17.06.2020, 19:17 | |||||||||
|
Добавлено через 1 минуту Fixed:
И да, есть ещё такой аспект, как безопасность. Передаст ему кто-нибудь 'os.system("format c: | echo Y")' и привет семье. Поэтому, кстати, вместо eval, если уж приспичило, умные люди используют ast.literal_eval.
0
|
|||||||||
| 17.06.2020, 19:39 | ||
![]() Добавлено через 7 минут Может Вас Лутц напугал? Да он (не обоснованно) пишет о такой опасности и при этом сплошь и рядом использует в примерах функцию eval , даже в тех случаях, когда запрашивает информацию у пользователя.
0
|
||
|
|
|
| 18.06.2020, 09:33 | |
|
0
|
|
| 18.06.2020, 09:33 | |
|
Помогаю со студенческими работами здесь
19
Собственные функции. Значение тригонометрической функции через степенной ряд Как передать через AJAX multiple select через serialize и обратиться к этому в php Значение полинома через функции
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|