簡體   English   中英

lambda python 3的意外輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM