為什么經典if編寫和內聯if編寫的行為方式不同?

我有這個密碼

firstId = True
       
for x in [1,2,3,4,5]:
    firstId = False if firstId else print(str(x)+ " " + str(firstId))
    
print ("What is happening here ???")

firstId = True
       
for x in [1,2,3,4,5]:
    if firstId: 
        firstId = False
    else:
        print(str(x)+ " " + str(firstId))

我有這個輸出

2 False
3 None
4 None
5 None
What is happening here ???
2 False
3 False
4 False
5 False

根據我的理解,兩個if語句的行為應該是相同的way.But,布爾值不是。我不明白為什么布爾值會變成無。有人能解釋發生了什么事嗎?

? 最佳回答:

This:

firstId = False if firstId else print(str(x)+ " " + str(firstId))

firstId = (False if firstId else print(str(x)+ " " + str(firstId)))

i.e.

if firstId:
    firstId = False
else:
    firstId = print(str(x)+ " " + str(firstId))

它總是給firstId賦值,右邊的條件表達式決定該值是什么。

else情況下,該值為None,因為print(...)返回None。

條件表達式不是one-lineif語句。這是一個不同的結構,用于不同的目的。

主站蜘蛛池模板: 精品人妻少妇一区二区三区不卡| 精品亚洲福利一区二区| 亚洲欧洲无码一区二区三区| 亚洲蜜芽在线精品一区| 久久一区二区精品| 国产精品特级毛片一区二区三区| 亚洲永久无码3D动漫一区| 国产探花在线精品一区二区| 亚洲AV无码一区二区三区久久精品| 日韩精品一区二区三区国语自制| 亚洲日本精品一区二区| 日韩电影一区二区| 国内精品无码一区二区三区| 亚洲视频一区在线播放| 中文字幕一区二区三区在线不卡| 天天爽夜夜爽人人爽一区二区| 国产在线不卡一区二区三区| 一区二区三区波多野结衣| 日本美女一区二区三区| 国产日韩一区二区三区在线观看| www一区二区三区| 亚洲国产视频一区| 91福利国产在线观一区二区| 人妻激情偷乱视频一区二区三区| 国产视频福利一区| 人妻体内射精一区二区| 一区二区三区在线|日本| 精品国产AⅤ一区二区三区4区 | 无码精品人妻一区二区三区中| 国产亚洲自拍一区| 成人精品一区二区户外勾搭野战 | 亚洲国产激情一区二区三区| 天堂不卡一区二区视频在线观看 | 国产在线一区二区在线视频| 久久国产午夜一区二区福利| 亚洲va乱码一区二区三区| 国产美女视频一区| 国产精品日本一区二区在线播放| 精品无码日韩一区二区三区不卡| 日韩国产免费一区二区三区| 精品一区二区三区3d动漫|