可恶的Python

原创
2017/11/20 21:44
阅读数 864

1. 缺乏一致性

  • set添加元素是set.add, list添加元素是list.append
  • list删除元素是list.remove, dict删除元素是del map[key]
  • len(x)而不是面向对象的x.len()

2. 变量赋值和定义相同

假如我这样写

is_destroy = True
...
is_destory = False

本来的意思是赋值,结果拼写错误变成了定义新变量,这个bug足够调半天。 而在其它语言里面,定义变量时要么有var、let等关键字,要么有变量的类型声明,是不会出错的。

3. 奇葩的global规则

x = 1
y = 3
def foo():
	print y
	x = 2
	print x
foo()
print x

没加global关键字,能读取变量,但是写的时侯却写到了另外一个变量。

4. 缩进表示代码结构

初看挺好的,简洁明了,风格统一。实际使用中却遇到了两个问题:

  1. 但是当我从网页上拷贝粘贴一段代码到编辑器中时,代码变得混乱不堪。
  2. 当我切换的另外一个tab自动替换成空格的环境写了一大堆代码以后,同样出现了问题。

5. Unicode黑魔法

我用了很长实际才把python的乱码问题搞懂。

# -*- coding: utf-8 -*-  
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

print str.decode('UTF-8').encode('GBK') 

总之把上面这些乱七八糟的加上就好了。

6. ++i的坑

这是专坑C程序员的特性,++i竟然不是自增1。这个bug害我调了大半天。

7. lambda

lambda闭包只能写一个语句,想写多个语句需要单独写一个函数。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部