Python None(空值)及用法

本文介绍了Python中特殊常量None的基本概念及其用法,包括None的数据类型、与其他类型的区别以及在函数返回值中的应用。

Python 中,有一个特殊的常量 None(N 必须大写)。

与 False 不同,它不表示 0,也不表示空字符串,而表示没有值,也就是空值。这里的空值并不代表空对象,即 None 和 []、“” 不同:

>>> None is []
False
>>> None is ""
False

None 有自己的数据类型,我们可以在 IDLE 中使用 type() 函数查看它的类型,执行代码如下:

>>> type(None)
<class 'NoneType'>

可以看到,它属于 NoneType 类型。

None的类型

None 是 NoneType 数据类型的唯一值(其他编程语言可能称这个值为 null、nil 或 undefined),也就是说,我们不能再创建其它 NoneType 类型的变量,但是可以将 None 赋值给任何变量。如果希望变量中存储的东西不与任何其它值混淆,就可以使用 None。
除此之外,None 常用于 assert、判断以及函数无返回值的情况。

>>> spam = print('Hello!')
Hello!
>>> None == spam
True

另外,对于所有没有 return 语句的函数定义,Python 都会在末尾加上 return None,使用不带值的 return 语句(也就是只有 return 关键字本身),那么就返回 None。

参考:http://c.biancheng.net/view/5659.html

Python 中,有多种清除空值的方法,以下是不同场景下的具体实现: - **处理数据表中的空值**:可以使用 `dropna` 函数删除数据表中包含空值的数据,也可以使用 `fillna` 函数对空值进行填充。使用 `dropna` 函数后,会返回一个不包含空值的数据表。以下是示例代码: ```python import pandas as pd # 示例数据表 data = {'col1': [1, None, 3], 'col2': [4, 5, None]} df = pd.DataFrame(data) # 使用 dropna 函数删除包含空值的行 df_without_nan = df.dropna() print(df_without_nan) # 使用 fillna 函数填充空值,这里以填充为 0 为例 df_filled = df.fillna(0) print(df_filled) ``` - **去除字典中的空值**:定义一个函数遍历字典,将值不为空字符串的键值对添加到新字典中。示例代码如下: ```python def removeEmpty(data): data2 = {} for o in data: if not data[o] == '': data2[o] = data[o] return data2 # 示例字典 data = {'key1': 'value1', 'key2': '', 'key3': 'value3'} result = removeEmpty(data) print(result) ``` - **清除 JSON 里的空数据**:包括空字典、空列表、空字符串和 `None`。可以定义递归函数来处理 JSON 数据中的嵌套结构。示例代码如下: ```python import json with open('001.json', 'r', encoding='utf-8') as f: file = f.read() aaa = json.loads(file) def value_is_not_empty(value): return value not in ['', None, {}, []] def empty_json_data(data): if isinstance(data, dict): temp_data = dict() for key, value in data.items(): if value_is_not_empty(value): new_value = empty_json_data(value) if value_is_not_empty(new_value): temp_data[key] = new_value return None if not temp_data else temp_data elif isinstance(data, list): temp_data = list() for value in data: if value_is_not_empty(value): new_value = empty_json_data(value) if value_is_not_empty(new_value): temp_data.append(new_value) return None if not temp_data else temp_data elif value_is_not_empty(data): return data data = empty_json_data(aaa) print(data) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值