python有什么缺点_Python中常见的缺陷是什么呢?

不要使用索引来循环序列

不要:for i in range(len(tab)) :

print tab[i]

做:for elem in tab :

print elem

为将为你自动执行大多数迭代操作。

使用enumerate如果确实需要索引和元素。for i, elem in enumerate(tab):

print i, elem

使用“==”检查时要小心千真万确或假的if (var == True) :

# this will execute if var is True or 1, 1.0, 1L

if (var != True) :

# this will execute if var is neither True nor 1

if (var == False) :

# this will execute if var is False or 0 (or 0.0, 0L, 0j)

if (var == None) :

# only execute if var is None

if var :

# execute if var is a non-empty string/list/dictionary/tuple, non-0, etc

if not var :

# execute if var is "", {}, [], (), 0, None, etc.

if var is True :

# only execute if var is boolean True, not 1

if var is False :

# only execute if var is boolean False, not 0

if var is None :

# same as var == None

不要检查是否可以,只需做并处理错误

不要:if os.path.isfile(file_path) :

file = open(file_path)

else :

# do something

做:try :

file = open(file_path)

except OSError as e:

# do something

或者更好的是使用python 2.6/3:with open(file_path) as file :

Python是动态类型的,因此检查类型会使失去灵活性。相反,可以通过检查行为来使用鸭子类型。例如,希望函数中有一个字符串,然后使用str()来转换字符串中的任何对象。要想获得一个列表,请使用list()来转换列表中的任何可迭代性。

不要:def foo(name) :

if isinstance(name, str) :

print name.lower()

def bar(listing) :

if isinstance(listing, list) :

listing.extend((1, 2, 3))

return ", ".join(listing)

做:def foo(name) :

print str(name).lower()

def bar(listing) :

l = list(listing)

l.extend((1, 2, 3))

return ", ".join(l)

不要:class Father :

pass

class Child(Father) :

pass

做:class Father(object) :

pass

class Child(Father) :

pass

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值