Я прошел через функцию partial Python. Я нашел, что это интересно, но было бы полезно, если бы я мог понять это с некоторыми примерами реального мира, а не изучать его как еще одну функцию языка.Примеры частичной функции реального мира
ответ
Посмотрите на мой вопрос здесь: Does python have a built-in function for interleaving generators/sequences?
from itertools import *
from functional import *
compose_mult = partial(reduce, compose)
leaf = compose_mult((partial(imap, next), cycle, partial(imap, chain), lambda *args: args))
Вы увидите, что я использовал частичное приложение для создания одного аргумента функции, которые могут быть переданы итератора функции (карты и уменьшить).
Одно использование, которое я часто ставил, это печатать до stderr
, а не по умолчанию stdout
.
from __future__ import print_function
import sys
from functools import partial
print_stderr = partial(print, file=sys.stderr)
print_stderr('Help! Little Timmy is stuck down the well!')
Вы можете использовать это с любыми другими аргументами, принятых print
функции:
print_stderr('Egg', 'chips', 'beans', sep=' and ')
Другим примером для, при написании Tkinter кода, например, для добавления данных идентификатора функции обратного вызова , так как обратные вызовы Tkinter вызываются без параметров.
Итак, предположим, что я хочу, чтобы создать цифровой клавиатуры, и знать, какая кнопка была нажата:
import Tkinter
from functools import partial
window = Tkinter.Tk()
contents = Tkinter.Variable(window)
display = Tkinter.Entry(window, textvariable=contents)
display.pack()
def clicked(digit):
contents.set(contents.get() + str(digit))
counter = 0
for i, number in enumerate("7894561230"):
if not i % 3:
frame = Tkinter.Frame(window)
frame.pack()
button = Tkinter.Button(frame, text=number, command=partial(clicked, number))
button.pack(side="left", fill="x")
Tkinter.mainloop()
+1 Это удобно для других GUI-библиотек (например, PyQt, wx). – reclosedev
- 1. примеры реального мира Rx
- 2. Kerberos - примеры реального мира?
- 3. «Элементы программирования» примеры реального мира?
- 4. примеры реального мира для двоичной структуры дерева
- 5. Где примеры реального мира в Delphi?
- 6. Категорировать примеры реального мира Django + AngularJS
- 7. Примеры реального мира шаблона Factory Method
- 8. OpenGL ES 2.0 с несколькими сетками? (только примеры реального мира)
- 9. PHP: Пример ООП реального мира
- 10. Примеры клеточных автоматов, которые выполняют задачи реального мира
- 11. Примеры проектов реального мира на angularjs с исходным кодом
- 12. Можете ли вы дать примеры ООП реального мира в PHP?
- 13. Multiton - пример реального мира?
- 14. Реализация интерфейсом реального мира
- 15. Пример реального мира Paxos
- 16. CouchDB пример реального мира
- 17. Единицы против реального мира
- 18. Пример наследования дерева реального мира
- 19. координаты реального мира в скелете
- 20. Файл приложения (пример реального мира)
- 21. Это точно модель реального мира?
- 22. Закон Деметры - вопрос реального мира
- 23. Десертизация реального мира Данные JSON
- 24. Какие приложения WPF реального мира существуют?
- 25. Базовые схемы базы данных реального мира
- 26. Черты в php - Любой пример реального мира
- 27. Экземпляры реального мира jquery $ .Callbacks(); и его функции
- 28. Условное связывание ASP.NET - реализация реального мира?
- 29. Как использовать StructureMap для приложений реального мира
- 30. NER: Связать выделенную сущность с понятием реального реального мира
«из модуля импорта *» плохой стиль, не распространять его вокруг в примерах фрагментах. – ddaa
@ddaa: Я не согласен. Он часто может быть уместным, например, при импорте «сантехники» общей полезности. – Marcin
Есть некоторые случаи, когда это полезно (например, импортировать все объекты из tkinter для написания приложения), но лучше всего избегать в примерах фрагментов. Выполнение этого из двух библиотек особенно сбивает с толку, потому что оно скрывает, откуда происходит каждая вещь: в какой библиотеке я бы нашел «compose»? О, и вы имели в виду «functools», а не «функциональный»? –