如何理解Python中的None
Python中的None是一个经常被用到的知识点,但是很多人对于None的内涵把握的还是不够精确,今天就和我一起好好理解下这个小知识点吧。
1.None表示空,但它不等于空字符串、空列表,也不等同于False,通过下面的代码进行验证。
a = ''
b = False
c = [] print(a==None) #比较值
print(b==None)
print(c==None) print(a is None) False
False
False
False
2.在写代码的过程中,会对某些代码进行判空操作。比如有一个变量a,那么if not a和if a is None两者有区别吗?如果说没有区别,那么不管a为何值时,这两个判断语句会返回相同的结果,但事实是这样吗?一起看下面这段代码,体会一下对None的判空操作
def fun():
return None a =fun()
if not a: #逻辑运算
print('S')
else:
print('F') if a is None:
print('S')
else:
print('F') S
S
运行代码发现,结果是一样的,这是由于我们调用函数时,会返回None,那么此时两个判断语句返回的结果是一样的,但是如果我们将a的值换成一个空列表,会出现什么结果呢?
def fun():
return None a = []
if not a: #逻辑运算
print('S')
else:
print('F') if a is None:
print('S')
else:
print('F') S
F
运行结果,发现会打印不一样的值。那么这是为什么呢?对于not a它的意思相当于True,所以会打印出S,而a is None是比较运算,它们不属于同一种类型,因此会出现不一样的打印值。
本文转载于tps://www.py.cn/faq/python/13508.html
如何理解Python中的None的更多相关文章
- 【转】你真的理解Python中MRO算法吗?
你真的理解Python中MRO算法吗? MRO(Method Resolution Order):方法解析顺序. Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会引发很多 ...
- 理解 Python 中的可变参数 *args 和 **kwargs:
默认参数: Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def getSum(x,y=5): print "x:", x print "y:& ...
- [转]深刻理解Python中的元类(metaclass)以及元类实现单例模式
使用元类 深刻理解Python中的元类(metaclass)以及元类实现单例模式 在看一些框架源代码的过程中碰到很多元类的实例,看起来很吃力很晦涩:在看python cookbook中关于元类创建单例 ...
- 深入理解Python中的yield和send
send方法和next方法唯一的区别是在执行send方法会首先把上一次挂起的yield语句的返回值通过参数设定,从而实现与生成器方法的交互. 但是需要注意,在一个生成器对象没有执行next方法之前,由 ...
- 如何理解python中的if __name__=='main'的作用
一. 一个浅显易懂的比喻 我们在学习python编程时,不可避免的会遇到if __name__=='main'这样的语句,它到底有什么作用呢? <如何简单地理解Python中的if __name ...
- 深入理解Python中的GIL(全局解释器锁)
深入理解Python中的GIL(全局解释器锁) Python是门古老的语言,要想了解这门语言的多线程和多进程以及协程,以及明白什么时候应该用多线程,什么时候应该使用多进程或协程,我们不得不谈到的一个东 ...
- 深入理解python中函数传递参数是值传递还是引用传递
深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...
- 全面理解python中self的用法
self代表类的实例,而非类. class Test: def prt(self): print(self) print(self.__class__) t = Test() t.prt() 执行结果 ...
- 深刻理解Python中的元类metaclass(转)
本文由 伯乐在线 - bigship 翻译 英文出处:stackoverflow 译文:http://blog.jobbole.com/21351/ 译注:这是一篇在Stack overflow上很热 ...
- 深刻理解Python中的元类(metaclass)
译注:这是一篇在Stack overflow上很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得 ...
随机推荐
- CodeForces - 1175D Array Splitting(数组划分+后缀和+贪心)
You are given an array a1,a2,…,ana1,a2,…,an and an integer kk. You are asked to divide this array in ...
- 最简陋的python数据
python 爬虫 最简陋的第一次爬取写入CSV文件(只是想纪念一下,以后看看现在自己多年轻) github
- Razor syntax reference for ASP.NET Core
Razor syntax reference for ASP.NET Core Razor is a markup syntax for embedding server-based code int ...
- 【集成模型】Stacking
0 - 思路 Stacking是许多集成方法的综合.其主要思路如下图所示,通过训练数据训练多个base learners(the first-level learners),这些learners的输出 ...
- HttpClient结合PostMethod调用接口
HttpClient结合PostMethod调用接口 解决方法: HttpClient client = new HttpClient(); PostMethod post = new PostM ...
- 雨田家园 delphi 拆分字符串
最近在使用Delphi开发一种应用系统的集成开发环境.其中需要实现一个字符串拆分功能,方法基本原型应该是:procedure SplitString(src: string ; ch: Char; v ...
- Pyhthon3之使用__slots__
正常情况下,我们定义了一个class,创建了一个class实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: >>> class Student( ...
- 第二十章 无状态Web应用集成——《跟我学Shiro》
目录贴:跟我学Shiro目录贴 在一些环境中,可能需要把Web应用做成无状态的,即服务器端无状态,就是说服务器端不会存储像会话这种东西,而是每次请求时带上相应的用户名进行登录.如一些REST风格的AP ...
- 02.提交bug
写代码最烦的也就是修复bug了,虽然这个避无可避…………………… a. bug的严重级别设置 1级:影响主要流程 ->在bug 的影响下,主流程 测试无法向下进行 2级:影响核心功能 -> ...
- 《CNCF × Alibaba云原生技术公开课》知识点自测(三):Kubernetes核心概念
(单选)1.Kubernetes的中文含义是___. A. 船 B.舵手 C.容器平台 D.起重机 (单选) 2.Kubectl是_____. A. 一个与Kubernetes集群进行交互.管 ...