第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么閉包一個print輸出兩個值,輸出None怎么回事?

為什么閉包一個print輸出兩個值,輸出None怎么回事?

風(fēng)景不在對岸 2016-05-14 16:49:09
請問cmp 函數(shù)只有一個print只有一個輸出,為何輸出None,且返回類型也是NoneType
查看完整描述

1 回答

?
清波

TA貢獻(xiàn)165條經(jīng)驗 獲得超90個贊

每每看到 Python 的閉包,尤其是 __closure__ 屬性,簡直自豪的要跳起來有沒有 哈哈。

題主的代碼很奇怪,上半截還是Python 3.x 的語法, 后面就開始用 Python2.x 了。

另外輸出還沒有錯。。。

題主定義完 一個閉包演示函數(shù)后,進(jìn)行了四次演示:

def?set_passline(passline):
????
????def?cmp(val):
????????if?val>=passline:
????????????print('Pass')
????????else:
????????????print('Failed')
????return?cmp
f_100?=?set_passline(60)
print?(type(f_100))
print?(f_100.__closure__)
print?(f_100(89))
print?(type(f_100(89)))

其后得到了6個輸出:

http://img1.sycdn.imooc.com//57371d910001a67104870134.jpg

第一個, <type 'function'> 自然就是?print (type(f_100)) 的輸出。

第二個, (<cell at .......>,) 這個元組就是f_100 的閉包輸出了, 其中只包含一個cell 類型, 其內(nèi)容是個 int 類型。

第三個 第四個, pass 和 其下面的 None, 則是 打印了 f_100(89) 的結(jié)果, 首先 f_100(89) 這個函數(shù)本身會打印 Pass, 其次 print(f_100(89)) 由于 f_100(89) 沒有返回值, 自然就會打印出 None.

第五個 第六個, Pass 和其下面的 <type 'NoneType'> ?跟 上面的道理一樣, 首先 函數(shù)會打印Pass 其實 這個函數(shù)沒有返回值, 所以 type(f_100(89)) 就是 type None 了。


所以 所有的 題主以為是 異常 的現(xiàn)象, 都有一個正常的解釋,且跟閉包 沒有什么聯(lián)系。。。 即使定義普通的函數(shù), 如果沒有返回值的話, 也會出現(xiàn)這種情況。

查看完整回答
1 反對 回復(fù) 2016-05-14
  • 1 回答
  • 0 關(guān)注
  • 1913 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號