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ì)被提示無(wú)定義)
C++的NULL
NULL是一個(gè)標(biāo)準(zhǔn)規(guī)定的宏定義,用來(lái)表示空指針常量,使用NULL必須包含相應(yīng)的標(biāo)準(zhǔn)頭文件【其定義在stddef.h文件中,作為最基本的語(yǔ)言依賴(lài)宏存在。但是幾乎任意的C++標(biāo)準(zhǔn)頭文件都會(huì)把這個(gè)宏引入?!?/p>
經(jīng)驗(yàn)證NULL==0。
None、Null與空字符‘‘什么區(qū)別
None
表示空無(wú)一物,啥也沒(méi)有存儲(chǔ)。
編程語(yǔ)言里采用None
比如在python中None不是一個(gè)保留關(guān)鍵字,只是NoneType對(duì)象的一個(gè)實(shí)例。
空就是空,它不是整型,不是浮點(diǎn)型,也不是字符串,就是一個(gè)NoneType。所以在使用len(None)時(shí)候會(huì)報(bào)錯(cuò),因?yàn)镹oneType沒(méi)有字符串才有的方法。
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ù)庫(kù)查詢(xún)中用Null,表示的含義相同
Null
表示空無(wú)一物,啥也沒(méi)有存儲(chǔ)。
數(shù)據(jù)庫(kù)中才使用Null
在數(shù)據(jù)庫(kù)查詢(xún)時(shí)Null就等同于python中的None,表示什么也沒(méi)有,是個(gè)空值,不是空字符串。常見(jiàn)的就是:
--篩選name字段不為空的記錄 select *? from table_A where name is not Null
Python中沒(méi)有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
- 類(lèi)型為string
以下是在python中驗(yàn)證了空字符串的特點(diǎn)。
In [66]: len('') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Out[66]: 0
In [67]: type('') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
Out[67]: str值得注意的是:
在數(shù)據(jù)庫(kù)表中如果存在空字符串,進(jìn)行表關(guān)聯(lián)操作時(shí)可能會(huì)出現(xiàn)空值放大的效果,導(dǎo)致表關(guān)聯(lián)后出現(xiàn)了記錄數(shù)超多。所以在數(shù)據(jù)庫(kù)表或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),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
手把手教你用322行Python代碼編寫(xiě)貪吃蛇游戲
最近在學(xué)Python,想做點(diǎn)什么來(lái)練練手,命令行的貪吃蛇一般是C的練手項(xiàng)目,但是一時(shí)之間找不到別的,就先做個(gè)貪吃蛇來(lái)練練簡(jiǎn)單的語(yǔ)法,下面這篇文章主要給大家介紹了關(guān)于如何用322行Python代碼編寫(xiě)貪吃蛇游戲的相關(guān)資料,需要的朋友可以參考下2023-02-02
Python實(shí)現(xiàn)將json格式數(shù)據(jù)存儲(chǔ)到Mysql數(shù)據(jù)庫(kù)
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)將json格式數(shù)據(jù)存儲(chǔ)到Mysql數(shù)據(jù)庫(kù),文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以參考下2025-03-03
保姆級(jí)官方y(tǒng)olov7訓(xùn)練自己的數(shù)據(jù)集及項(xiàng)目部署詳解
最近使用了YOLOv7訓(xùn)練自己的數(shù)據(jù)集,接下來(lái)簡(jiǎn)單記錄一下項(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

