Python
Не могу понять
Зачем в Питоне нужно присваивать функции к переменным, если их можно просто по имени вызвать ?
непонятно о чём конкретно речь (все случаи тривиальны)
1 о функции, передаваемой как параметр.
foo(x) : block1; x; block2
неравнозначно, тк последовательность изменена
x;block1; block2 (вызов "просто по имени ")
или ещё вариант
можно написать равнозначный последовательный код
x();foo();y();foo()...
а можно foo(x);foo(y)... уже, как автору понравится
Тут как с объяснением анекдота. Некоторым не поможет, да и нельзя иногда это сделать
2 о возвращаемых значениях функции (?)
3 всё-таки о переменных
x=foo();print (x)
или print (foo())"своя рука- владыка". Кто как хочет, так и пишет
1 о функции, передаваемой как параметр.
foo(x) : block1; x; block2
неравнозначно, тк последовательность изменена
x;block1; block2 (вызов "просто по имени ")
или ещё вариант
можно написать равнозначный последовательный код
x();foo();y();foo()...
а можно foo(x);foo(y)... уже, как автору понравится
Тут как с объяснением анекдота. Некоторым не поможет, да и нельзя иногда это сделать
2 о возвращаемых значениях функции (?)
3 всё-таки о переменных
x=foo();print (x)
или print (foo())"своя рука- владыка". Кто как хочет, так и пишет
В Python лямбды анонимные. Их либо сразу использовать - как параметр функции, либо присваивать переменным - для последующего использования.
В целом же, даже именованные функции присваивают переменным для удобства. Возьмём, например, банальный калькулятор. Его можно написать, перечисляя все возможные операции в if:
Главное - не увлекаться. А то код превратится в говнокод.
В целом же, даже именованные функции присваивают переменным для удобства. Возьмём, например, банальный калькулятор. Его можно написать, перечисляя все возможные операции в if:
op, a, b = input().split()
if op == '+': print(float(a) + float(b))
elif op == '-': print(float(a) - float(b))
elif op == '*': print(float(a) * float(b))
elif op == '/': print(float(a) / float(b))
А можно просто сделать словарь функций: from operator import *
op, a, b = input().split()
print({'+': add, '-': sub, '*': mul, '/': truediv}[op](float(a), float(b)))
Функция - это такое же значение, как и число. И присваивание функций переменным, передача функций в качестве параметров других функций - это способ упрощения кода. Возьми, например sort / sorted - там для сложных сортировок функции сортировки передаётся пользовательская функция, задающая порядок сортировки.Главное - не увлекаться. А то код превратится в говнокод.
Нет никакого "нужно". Просто это используется где-то для удобства. Тот же пример с tkinter Button - откуда tkinter узнает, какую функцию запускать, если ты ее не предоставишь?
Михаил Эфиопов
я вообще не понял, что значит
Евгений Смирнов
кароче это типо чтоб много не писать
Переменные передаются в функцию.
Ты можешь присвоить переменной функцию.
У тебя вопрос странный, где ты это вычитал?
И это делать вообще не обязательно.
Ты можешь присвоить переменной функцию.
У тебя вопрос странный, где ты это вычитал?
И это делать вообще не обязательно.
Есть правила.
Но если твой способ рабочий, и тебе легче так делать, то пожалуйста.
Главное чтобы код работал
Но если твой способ рабочий, и тебе легче так делать, то пожалуйста.
Главное чтобы код работал
Похожие вопросы
- Что такое "параметры функций" в Пайтоне? Я никак не могу понять
- Никак не могу понять как поступить =)
- Как научиться решать задачи на деление и остаток в Python? Не могу понять принцип решения. Примеры задач:
- Питон простенький код не могу понять в чем проблема нужно подсчитать кол во комнат площадью 9.2 кв м
- Питон не могу понять код
- Помогите с задачей, никак не могу понять, как именно писать код
- Если две программы работают одинаково но код у них разный, то - это считается ли уже как другая программа ? Понять могу
- Как понять логику решения следующей задачи (ещё и "для начинающих" называется)?
- Как понять логику решения следующей задачи "ДЛЯ НАЧИНАЮЩИХ"?
- Функции в Python, как понять?