首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中一些糟糕的语法!你遇到过吗

Python中一些糟糕的语法!你遇到过吗

作者头像
py3study
发布2020-01-19 16:42:08
4830
发布2020-01-19 16:42:08
举报
文章被收录于专栏:python3python3

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

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

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

代码如下:

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

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

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

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

我们在来看看bool的类型:

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

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

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

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

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

代码如下:

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

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

5.列表取值超出索引数

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

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

但如果我们这样写:

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

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

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

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

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

Python中一些糟糕的语法!你遇到过吗?还知道那些?
Python中一些糟糕的语法!你遇到过吗?还知道那些?
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档