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

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

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


 

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

代码如下:

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

 

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

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

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

 

我们在来看看bool的类型:

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

 

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

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

 

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

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

代码如下:

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

 

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

5.列表取值超出索引数

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

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

 

但如果我们这样写:

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

 

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

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

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

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

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

猜你喜欢

转载自www.cnblogs.com/python960410445/p/10223619.html