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è)東西,是空字符串,空字符串有哪些特征呢?
- 長度為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)文章
PyTorch的Optimizer訓(xùn)練工具的實(shí)現(xiàn)
這篇文章主要介紹了PyTorch的Optimizer訓(xùn)練工具的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Python實(shí)現(xiàn)將json格式數(shù)據(jù)存儲(chǔ)到Mysql數(shù)據(jù)庫
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)將json格式數(shù)據(jù)存儲(chǔ)到Mysql數(shù)據(jù)庫,文中的示例代碼簡潔易懂,有需要的小伙伴可以參考下2025-03-03
保姆級(jí)官方y(tǒng)olov7訓(xùn)練自己的數(shù)據(jù)集及項(xiàng)目部署詳解
最近使用了YOLOv7訓(xùn)練自己的數(shù)據(jù)集,接下來簡單記錄一下項(xiàng)目的部署,這篇文章主要給大家介紹了關(guān)于保姆級(jí)官方y(tǒng)olov7訓(xùn)練自己的數(shù)據(jù)集及項(xiàng)目部署的相關(guān)資料,需要的朋友可以參考下2022-08-08
Python實(shí)現(xiàn)求解一元二次方程的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)求解一元二次方程的方法,涉及Python基于math包進(jìn)行數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-06-06

