三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
作者:互联网
级冷门的Python知识点,小编收集了好久一起分享出来给大家了,不喜勿喷~
... 这是省掉号,在Python中,全部皆政策。它也不破例。在 Python 中,它叫做 Ellipsis 。在 Python 3 中你能够直接写…来得到这玩意。
如果有想学习python的程序员,可来我的python学习扣qun:711944363,免费送python的视频教程噢!我每晚上8点还会在群内直播讲解python知识,欢迎大家前来学习交流。
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
而在 2 中没有…这个语法,只能直接写Ellipsis来获取。
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
它转为布尔值时为真
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
终究,这东西是一个单例。
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
这东西有啥用呢?风闻它是Numpy的语法糖,不玩 Numpy 的人,能够说是没啥用的。
在网上只看到这个 用 ... 替代 pass ,略微有点用,但又不是有必要运用的。
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
怎样修改阐冥具提示符
正常情况下,咱们在 终端下 实施Python 指令是这样的。
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
你是否想过 >>> 和 ... 这两个提示符也是能够修改的呢?
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
增量赋值的功用更好
比方 += 和 *= 这些运算符,叫做 增量赋值运算符。
这儿运用用 += 举例,以下两种写法,在作用上是等价的。
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
+= 其不和运用的魔法办法是 iadd,假定没有完结这个办法则会退而求其次,运用 add 。
这两种写法有什么差异呢?
用列表举例 a += b,运用 _ add _ 的话就像是运用了a.extend(b),假定运用 _ add _ 的话,则是 a = a+b,前者是直接在原列表上进行扩展,而后者是先从原列表中取出值,在一个新的列表中进行 扩展,然后再将新的列表政策回来给变量,明显后者的消耗要大些。所以在能运用增量赋值的时分尽量运用它。
古怪的字符串
示例一
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
示例二
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
示例三
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
and 和 or 的取值次第
and 和 or 是咱们再了解不过的两个逻辑运算符。而咱们一般只用它来做判断,很少用它来取值。假定一个or表达式中所有值都为真,Python会挑选第一个值,而and表达式则会挑选第二个。
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
默许参数最好不为可变政策
函数的参数分三种 - 可变参数 - 默许参数 - 关键字参数,这三者的具体差异,和运用办法在 廖雪峰的教程里会具体的阐明。这儿就不转移了。今天要说的是,传递默许参数时,新手很简略踩雷的一个坑。
先来看一个示例
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
在这儿,你能够暂停一下,考虑一下会输出什么?考虑往后,你的答案是否和下面的一起呢?
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
假定是,那你能够跳过这部分内容,假定不是,请接着往下看,这儿来剖析一下。Python 中的 def 句子在每次实施的时分都初始化一个函数政策,这个函数政策就是咱们要调用的函数,能够把它当成一个一般的政策,只不过这个政策具有一个可实施的办法和部分特征。
关于参数中供给了初始值的参数,由于 Python 中的函数参数传递的是政策,也能够认为是传地址,在第一次初始化 def 的时分,会先生成这个可变政策的内存地址,然后将这个默许参数 item_list 会与这个内存地址绑定。在后面的函数调用中,假定调用方指定了新的默许值,就会将正本的默许值掩盖。假定调用方没有指定新的默许值,那就会运用正本的默许值。
访问类中的私有办法
咱们都知道,类中可供直接调用的办法,只需公有办法(protected类型的办法也能够,可是不主张)。也就是说,类的私有办法是无法直接调用的。
先看个栗子
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
已然都是办法,那咱们真的没有办法能够直接调用吗?当然有啦,只是主张你千万不要这样弄,这儿只是广泛,我们先了解一下:
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
类首字母纷歧定是大写
在正常情况下,咱们所编写的所见到的代码,如同都默许了类名首字母大写,而实例用小写的这一准则。但这并不是强制性的,即便你反过来的也没有联络。但有一些内置的类,首字母都是小写,而实例都是大写。
比方 bool 是类名,而 True,False 是其实例; 比方 ellipsis是类名,Ellipsis是实例; 还有 int,string,float,list,tuple,dict等一系列数据类型都是类名,它们都是小写。
时有时无的切片异常
举个简单的栗子
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
执行完后和咱们预期的相同,会抛出索引异常。
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
可是今天要说的必定不是这个,而是一个你可能会不知道的冷常识。
比如像下这种写法就不会报索引异常,实施my_list[5:],会回来一个新list:[]。
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
哪些情况下不需要续行符
在写代码时,为了代码的可读性,代码的排版是尤为重要的。为了完结高可读性的代码,咱们常常运用到的就是续行符 。
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
那有哪些情况下,是不需要写续行符的呢?经过总结,在这些符号中心的代码换行能够省掉掉续行符: [] , () , {}
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
其他还有,在多行文本注释中 ''' ,续行符也是能够不写的。
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
上面只举了一些简略的比方。但你要学会触类旁通。相同的,在以下这些场景也相同适用
类,和函数的界说。列表推导式,字典推导式,集结推导式,生成器表达式。
Py2 也能够运用 print()
我信任应该有不少人,思维定式,觉得只需 Py3 才能够运用 print(),而 Py2 只能运用print ’’。其实并不是这样的。在Python 2.6之前,只支撑
<pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">print "hello"
</pre>
在Python 2.6和2.7中,能够支撑如下三种
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
在Python3.x中,能够支撑如下两种
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
两次 return
咱们都知道,try…finally… 句子的用法,不论try里边是正常实施仍是报异常,终究都能确保finally能够实施。同样的咱们又知道,一个函数里只需遇到 return 函数就会立马完毕。根据以上这两点,咱们来看看这个比方,终究作业进程是如何的?
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
惊讶的发现,在 try 里的return竟然不起作用。原因是,在try…finally…句子中,try中的return会被直接忽视,由于要确保 finally 能够实施。
for 死循环
for 循环能够说是 根底得不能再根底的常识点了。可是假定让你用 for 写一个死循环,你会写吗?(问题来自群友 陈**)这是个开放性的问题,在往下看之前,主张你先尝试自己考虑,你会怎样答复。好了,假定你还没有思路,那就来看一下 一个海外 MIT 群友的答复:
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
是不是懵逼了。iter 还有这种用法?这为啥是个死循环?这真的是个冷常识,关于这个常识点,你假定看中文网站,可能找不到相关资料。还好你能够经过 IDE 看py源码里的注释内容,介绍了很具体的运用办法。
正本iter有两种运用办法,一般咱们的认知是第一种,将一个列表转化为一个迭代器。而第二种办法,他接纳一个 callable政策,和一个sentinel 参数。第一个政策会一向作业,直到它回来 sentinel 值才完毕。那 int 呢,这又是一个常识点,int 是一个内建办法。经过看注释,能够看出它是有默许值0的。你能够在终端上输入 int() 看看是不是回来0。
由于int() 永久回来0,永久回来不了1
所以这个 for 循环会没有终点。一向作业下去。这些问题和答案都源自于群友的智慧。假定你也想参与咱们的议论中,请到群众号后台,添加我个人微信。
小整数池
先看比方。
三年经验的程序员都不一定知道的十五条Python冷知识,条条精辟!
为防止整数一再恳求和毁掉内存空间,Python 界说了一个小整数池 [-5, 256] 这些整数政策是提早建立好的,不会被废物回收。以上代码请在 终端Python环境下查验,假定你是在IDE中查验,并不是这样的作用。那终究一个示例,为啥又是True?由于当你在同一行里,一起给两个变量赋同一值时,阐冥具知道这个政策现已生成,那么它就会引用到同一个政策。假定分红两成的话,阐冥具并不知道这个政策现已存在了,就会从头恳求内存存放 这个政策。
intern机制
字符串类型作为Python中最常用的数据类型之一,Python阐冥具为了前进字符串运用的功率和运用功用,做了许多优化。例如:Python阐冥具中运用了 intern(字符串驻留)的技能来前进字符串功率,什么是intern机制?就是相同的字符串政策只是会保存一份,放在一个字符串储蓄池中,是共用的,当然,必定不能 改动,这也选择了字符串有必要是不可变政策。
标签:条条,精辟,Python,知识,程序员,十五条 来源: https://blog.csdn.net/zhoulei124/article/details/89087977