我一直在通過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. Builder模式的真實世界示例
- 2. OOPS的真實世界示例
- 3. 真實世界的反射示例
- 4. PHP:真實世界的OOP示例
- 5. NPOI真實世界樞軸示例
- 6. 什麼是Scala的部分應用功能的真實世界示例
- 7. RxJava的真實世界用例對象
- 8. 尋找真實世界的Gradle例子
- 9. Multiton - 真實世界的例子?
- 10. 真實世界的盲源分離
- 11. 真實世界中的Glassfish
- 12. PHP的高級OOP功能的真實世界示例
- 13. 在C#中使用#define的真實世界示例?
- 14. jQuery Galleria圖片庫JSON的真實世界工作示例
- 15. SOA架構使用.NET的真實世界示例
- 16. 真實世界Haskell示例中的模糊錯誤
- 17. WF和WPF交互的真實世界示例
- 18. @optional協議方法的真實世界示例
- 19. 真實世界併發軟件中讀寫的示例
- 20. 具有真實世界的Canonical QTranslator示例QLocale
- 21. Redux關於真實世界示例的問題
- 22. 企業服務總線真實世界的用法或示例
- 23. 真實世界對象
- 24. ASP.Net MVC真實世界級示例業務應用程序
- 25. 真實世界Windows Azure成本計算示例,任何人?
- 26. 應用程序文件(真實世界示例)
- 27. jquery的真實世界實例$ .Callbacks();和它的功能
- 28. 什麼是TDD實際應用的高質量真實世界示例?
- 29. 在真實世界中的oracle
- 30. 真實世界的3D應用
「從模塊導入*」是壞的風格,不要在例如片段給周圍的人。 – ddaa 2012-01-12 12:24:54
@ddaa:我不同意。它可以經常是合適的,例如當輸入一般實用程序的「管道」時。 – Marcin 2012-01-12 12:31:10
在某些情況下它很有用(例如從tkinter導入所有對象來編寫應用程序),但最好在示例代碼片段中避免它。從兩個圖書館做它是特別令人困惑的,因爲它掩蓋了每件事來自哪裏:我可以找到哪個圖書館?哦,你是不是指'functools',而不是'functional'? – 2012-01-12 12:51:25