可恶的Python

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闭包只能写一个语句,想写多个语句需要单独写一个函数。

转载于:https://my.oschina.net/chunquedong/blog/1576346

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值