Python的None和C++的NULL用法解讀
Python的None和C++的NULL
Python的None
該值表示一個(gè)空對(duì)象,是Python的一個(gè)特殊的值。None不能理解為0,因?yàn)?是有意義的。對(duì)值為None的對(duì)象進(jìn)行邏輯判斷,會(huì)返回False。
可以將None賦值給任何變量,也可以將任何變量賦值給一個(gè)None值的對(duì)象。
而在Python中,NULL表示空字符,即""。(直接使用NULL會(huì)被提示無定義)
C++的NULL
NULL是一個(gè)標(biāo)準(zhǔn)規(guī)定的宏定義,用來表示空指針常量,使用NULL必須包含相應(yīng)的標(biāo)準(zhǔn)頭文件【其定義在stddef.h文件中,作為最基本的語言依賴宏存在。但是幾乎任意的C++標(biāo)準(zhǔn)頭文件都會(huì)把這個(gè)宏引入?!?/p>
經(jīng)驗(yàn)證NULL==0。
None、Null與空字符‘‘什么區(qū)別
None
表示空無一物,啥也沒有存儲(chǔ)。
編程語言里采用None
比如在python中None不是一個(gè)保留關(guān)鍵字,只是NoneType對(duì)象的一個(gè)實(shí)例。
空就是空,它不是整型,不是浮點(diǎn)型,也不是字符串,就是一個(gè)NoneType。所以在使用len(None)時(shí)候會(huì)報(bào)錯(cuò),因?yàn)镹oneType沒有字符串才有的方法。
In [71]: type(None) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? Out[71]: NoneType In [72]: len(None) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --------------------------------------------------------------------------- TypeError ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last) <ipython-input-72-96b07938784c> in <module> ----> 1 len(None) TypeError: object of type 'NoneType' has no len()
數(shù)據(jù)庫查詢中用Null,表示的含義相同
Null
表示空無一物,啥也沒有存儲(chǔ)。
數(shù)據(jù)庫中才使用Null
在數(shù)據(jù)庫查詢時(shí)Null就等同于python中的None,表示什么也沒有,是個(gè)空值,不是空字符串。常見的就是:
--篩選name字段不為空的記錄 select *? from table_A where name is not Null
Python中沒有Null這個(gè)東西
在直接使用Null時(shí),會(huì)報(bào)錯(cuò)提示Null is not defined。
In [68]: type(Null)? --------------------------------------------------------------------------- NameError ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last) <ipython-input-68-fe48179a953c> in <module> ----> 1 type(Null) NameError: name 'Null' is not defined In [69]: type('Null') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? Out[69]: str In [70]: len('Null') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Out[70]: 4
空字符’’
有存儲(chǔ)個(gè)東西,是空字符串,空字符串有哪些特征呢?
- 長(zhǎng)度為0
- 類型為string
以下是在python中驗(yàn)證了空字符串的特點(diǎn)。
In [66]: len('') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Out[66]: 0 In [67]: type('') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? Out[67]: str
值得注意的是:
在數(shù)據(jù)庫表中如果存在空字符串,進(jìn)行表關(guān)聯(lián)操作時(shí)可能會(huì)出現(xiàn)空值放大的效果,導(dǎo)致表關(guān)聯(lián)后出現(xiàn)了記錄數(shù)超多。所以在數(shù)據(jù)庫表或dataframe關(guān)聯(lián)時(shí),需要特別處理空字符串這種情形。
總結(jié)
現(xiàn)在是不是頭腦清醒了許多~
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
在Python中獲取操作系統(tǒng)的進(jìn)程信息
今天小編就為大家分享一篇在Python中獲取操作系統(tǒng)的進(jìn)程信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08python之lambda表達(dá)式與sort函數(shù)中的key用法
這篇文章主要介紹了python之lambda表達(dá)式與sort函數(shù)中的key用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08pdf論文中python畫的圖Type 3 fonts字體不兼容的解決方案
這篇文章主要介紹了pdf論文中python畫的圖Type 3 fonts字體不兼容的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04pytest通過assert進(jìn)行斷言的實(shí)現(xiàn)
assert斷言是一種用于檢查代碼是否按預(yù)期工作的方法,在pytest中,assert斷言可以用于測(cè)試代碼的正確性,以確保代碼在運(yùn)行時(shí)按照預(yù)期工作,本文就來介紹一下如何使用,感興趣的可以了解下2023-12-12Python Pytorch gpu 分析環(huán)境配置
Pytorch是目前最火的深度學(xué)習(xí)框架之一,目前也支持了pytorch的GPU加速,所以我就想著,在這兩個(gè)電腦上裝個(gè)Pytorch,這篇文章主要介紹了Python Pytorch(gpu)分析環(huán)境配置,需要的朋友可以參考下2023-04-04