回答
一個lambda
「身體必須是單個表達。在Python 2.x中,print
是一個聲明。然而,在Python 3中,print
是函數(並且函數應用程序是一個表達式,所以它將在lambda中運行)。你可以(而且應該,向前兼容:)如果你使用的是最新的Python 2.x的使用後移植打印功能:
In [1324]: from __future__ import print_function
In [1325]: f = lambda x: print(x)
In [1326]: f("HI")
HI
現在我明白了爲什麼它是一個很重要的功能。想要使用打印作爲默認kwarg,並修復它。謝謝。 – 2012-07-03 07:30:16
你寫的是相當於
def anon():
return print "x"
這也導致一個SyntaxError,蟒蛇不會讓您指定在2.xx中打印的值;在python3中,你可以說
lambda: print('hi')
它會工作,因爲他們已經將print改爲函數而不是語句。
lambda的主體必須是一個返回值的表達式。 print
作爲聲明,不會返回任何內容,甚至不會返回None
。同樣,你不能的print
結果賦值給一個變量:
>>> x = print "hello"
File "<stdin>", line 1
x = print "hello"
^
SyntaxError: invalid syntax
你也不能把一個變量賦值在一個lambda,因爲分配是語句:
>>> lambda y: (x = y)
File "<stdin>", line 1
lambda y: (x = y)
^
SyntaxError: invalid syntax
在情況下,我用這簡單的磕碰出我使用這個:
fn = lambda x: sys.stdout.write(str(x) + "\n")
它完美的作品。
作爲補充說明 - 使用上面的未來版本。只有在沒有可用的情況下才能使用它 - 現在這將嚴重過時。 – 2015-04-04 20:53:47
你可以這樣做。
創建一個函數來打印語句轉換成一個功能:
def printf(text):
print text
和打印:
lambda: printf("Testing")
使用Python 3.x中,打印可以在拉姆達工作,而不改變lambda的語義。
以特殊的方式使用,這對於調試非常方便。 我發表這篇'遲到答案',因爲這是我經常使用的一種實用技巧。
假設你的 '配備工具' 拉姆達:
lambda: 4
那麼你的 '儀器' 拉姆達是:
lambda: (print (3), 4) [1]
- 1. 爲什麼「打印」XYZ $ _「`工作,但打印」$ _XYZ「`不?
- 2. 爲什麼「lambda x:x()()()()」工作?
- 3. 爲什麼我不能打印工資?
- 4. 爲什麼不打印?
- 5. 爲什麼'假'不打印?
- 6. 爲什麼Exception不打印?
- 7. 這爲什麼不打印?
- 8. 爲什麼使用一個「打印」而不是三個工作?
- 9. 爲什麼我的雲打印不工作?
- 10. Python - 爲什麼打印功能不工作?
- 11. 打印工作不
- 12. 爲什麼打印輸出不爲空?
- 13. 爲什麼我的lambda不起作用?
- 14. 爲什麼R會打印打印作業?
- 15. 在另一張紙上打印,爲什麼它不起作用?
- 16. 爲什麼printf不在控制檯上打印「操作員」?
- 17. 爲什麼在打印介質查詢中不顯示任何工作?
- 18. 爲什麼不CGPathIsRect工作?爲什麼CGPathContainsPoint不工作?
- 19. 爲什麼數組不打印列表?
- 20. 爲什麼不打印「Num」圈子?
- 21. 爲什麼ArrayList不能正確打印?
- 22. 爲什麼我的程序不打印?
- 23. 爲什麼此代碼不打印「20」?
- 24. 爲什麼不打印這個循環?
- 25. C - 爲什麼printf不只是打印?
- 26. 爲什麼Python不打印返回值?
- 27. 這是爲什麼不打印
- 28. 爲什麼不打印日期?
- 29. 此代碼不打印。爲什麼?
- 30. 爲什麼精度不能打印?
http://docs.python.org/reference/expressions.html#lambda 。它說「表達」,這是所有可能的表達的完整定義的鏈接。這是如何「稀疏」?什麼不正確或不完整? – 2010-06-04 02:49:02
@洛特我對於表達/陳述是什麼以及印刷品屬於哪裏有誤解。現在有意義 – Anycorn 2010-06-04 05:31:06