Python中一些糟糕的语法!你遇到过吗?还知道那些?

Posted python960410445

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中一些糟糕的语法!你遇到过吗?还知道那些?相关的知识,希望对你有一定的参考价值。

Python是一门语法优雅,功能强大,开发效率高,应用领域广泛的解释性语言。

其有非常多的优点,但是也并不是完美的,除了大家都知道的执行速度不够快,Python2和Python3的兼容问题,以及GIL锁,在其语法上也有一些特点(是否是缺点见仁见智啦):


 

1. 使用可变对象作为函数默认值

代码如下:

技术分享图片

 

在Python中,字典,集合,列表等等对象不适合作为函数默认值。因为这个默认值在函数创建时就会生成, 每次调用都调用了这个对象的”缓存”。

2. bool是int的子类 我们可以用以下代码来测试:

技术分享图片

 

我们在来看看bool的类型:

技术分享图片

 

3.‘==’ 和 is 的区别 ”Is”是判断两个对象是否是同一个对象, “==“是判断两个对象的值,但我们通过以下代码来测试:

技术分享图片

 

上边我们四段代码,我们可以想象出python的内存管理,缓存了-5——256的对象。 最后一段,因为float(‘nan’)的类型就是nan,“==”代表值相同,而nan并不是一个值nan和nan的比较关系只能是nan != nan,就如同我们说,负无穷不可能等于负无穷一样。

4. lambda在闭包中会保存局部变量

代码如下:

技术分享图片

 

原因是当赋值给myList,lambda表达式就执行了循环,直到 i =4结束,i被保留。

5.列表取值超出索引数

我们可以这样写一段代码:

技术分享图片

 

但如果我们这样写:

技术分享图片

 

6. 缩进的问题见仁见智。

如果考虑“在网络上传播代码片段”这个问题,强制的换行和缩进可能是一个障碍。

换句话说,python代码无法像Lua、JS那样压缩到一行,在复制粘贴、分享给别人时可能会很麻烦。

你还遇到过哪些?欢迎评论分享!

技术分享图片

以上是关于Python中一些糟糕的语法!你遇到过吗?还知道那些?的主要内容,如果未能解决你的问题,请参考以下文章

Python学习者可能存在的几个问题,你遇到过吗?

这个BUG你遇到过吗

日常使用Git,这些问题你遇到过吗?

day计划 结束

8个高效的Python爬虫框架,你接触过吗?

聊天尬死名场面,你遇到过吗?教你一键获取斗图表情包,晋升聊天达人