[英]Unexpected output for lambda python 3
我試圖使用lambda作為用例,但它似乎無法正常工作。 以下是我的嘗試
以下是我使用的,在stackflow中我遇到很多人為此獲得輸出,但對我來說它是無
from __future__ import print_function
f = lambda x: print(x)
f()
f("Hello") ### now out put is shown expected is Hello output
f("Hello") is None ## I checked if its None and it is
>>> True
l = lambda x : sys.stdout.write(x)
l('hello') # this time its showing output as 5 instead of printing hello
>>> 5
我甚至嘗試了一些不使用lambda的東西,不幸的是,它沒有工作,並且沒有使用
from functools import partial
spam = partial(print, 'Hello!')
spam()
spam() is None
>>> True
我從這個問題的最后一個答案中得到了這個, 將print函數賦給變量
任何人都可以幫助我,我錯過了什么,為什么我不能打印字符串?
有什么不期望的? f('Hello') is None
評估為True
? 那是預期的,因為它是None
。
lambda x: print(x)
沒有'return',只有副作用,副作用是將東西打印到輸出。 這類似於一個功能
def func(x):
print(x)
它沒有return語句,因此,如果你評估函數,它的輸出將是None
。
l = lambda x : sys.stdout.write(x)
l('hello') # this time its showing output as 5 instead of printing hello
>>> 5
這可能是因為寫入沒有刷新,你可以通過手動調用來強制執行
sys.stdout.flush()
至於為什么它返回hello5
是因為Python shell打印出前一個語句的返回值, sys.stdout.write()
返回寫入字符的計數,如果'hello'為5則因此它們連接成hello5
。 如果你在一個普通的Python文件中運行它,即python filename.py
,它將永遠不會打印5
和只有hello
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.