我一直在通过Python的partial函数。我发现它很有趣,但如果我能够用一些真实世界的例子来理解它,而不是将它学习为另一种语言特征,那将会很有帮助。真实世界的部分函数示例
3
A
回答
-1
在这里看看我的问题: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))
你会看到,我已经使用部分应用程序来创建可以传递到迭代器函数(Map和Reduce)单参数的函数。
11
我经常使用的一种用法是打印到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 ')
6
另一个例子是用于,写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
+1对于其他GUI库(如PyQt,wx)也很方便。 – reclosedev 2012-01-12 15:33:58
相关问题
- 1. OOP真实世界示例
- 2. OOPS的真实世界示例
- 3. Builder模式的真实世界示例
- 4. Paxos的真实世界示例
- 5. 真实世界的反射示例
- 6. PHP:真实世界的OOP示例
- 7. NPOI真实世界枢轴示例
- 8. 什么是Scala的部分应用功能的真实世界示例
- 9. 寻找真实世界的Gradle例子
- 10. Mesos真实世界的用例
- 11. Multiton - 真实世界的例子?
- 12. RxJava的真实世界用例对象
- 13. 真实世界的盲源分离
- 14. 真实世界的目的
- 15. 真实世界中的Glassfish
- 16. 仿函数或函数对象的真实世界用法
- 17. PHP的高级OOP功能的真实世界示例
- 18. 卡兰异步库系列方法的真实世界示例
- 19. SOA架构使用.NET的真实世界示例
- 20. Spring 5的真实世界控制器示例:Web反应性
- 21. 真实世界并发软件中读写的示例
- 22. 真实世界Haskell示例中的模糊错误
- 23. WF和WPF交互的真实世界示例
- 24. 具有真实世界的Canonical QTranslator示例QLocale
- 25. @optional协议方法的真实世界示例
- 26. Apache Helix,Zookeeper,Mesos和Erlang的真实世界示例?
- 27. 春季原型bean的真实世界示例
- 28. jQuery Galleria图片库JSON的真实世界工作示例
- 29. 在C#中使用#define的真实世界示例?
- 30. 企业服务总线真实世界的用法或示例
“从模块导入*”是坏的风格,不要在例如片段给周围的人。 – ddaa 2012-01-12 12:24:54
@ddaa:我不同意。它可以经常是合适的,例如当输入一般实用程序的“管道”时。 – Marcin 2012-01-12 12:31:10
在某些情况下它很有用(例如从tkinter导入所有对象来编写应用程序),但最好在示例代码片段中避免它。从两个图书馆做它是特别令人困惑的,因为它掩盖了每件事来自哪里:我可以找到哪个图书馆?哦,你是不是指'functools',而不是'functional'? – 2012-01-12 12:51:25