Python 开发人员常犯的七大“致命”错误( 二 )
现在 , 在 Python 中 , 列表、字典和集合都是可变类型 。 因此 , 设置默认值可能会导致意外的结果 , 如下所示:
def addToList(x, a=[]):a.append(x)return alistOne = addToList(5)#prints [5]anotherList = addToList(10)# [5, 10]
如你所见 , 第二个列表包含之前添加的元素 , 因为函数中的可变默认参数跨状态存储这些元素 。
Python 中可变默认对象的问题在于 , 它是在定义函数时计算的 。 这会导致变异值也保留之前的内容 。
为避免此类严重错误 , 请将None设置为默认值 , 并在函数中分配可变变量 , 如下所示:
def addElement(x, a=None):if not a:a = []a.append(x)return a
错误七:忽略多重集成和方法解析顺序与大多数编程语言不同 , Python 支持多重继承 。 这意味着 , 在具有继承的类中 , 方法和类变量是根据继承类时指定的顺序执行的 。
初学者往往会忽略这个概念 , 尤其是当他们只使用单一继承时 。
因此 , 在下面这段代码中 , 当调用类 C 的方法时 , 将使用超类 B 各自的方法:
>>> class A(object):...def me(self):print("class A")>>> class B(A):...def me(self):print("class B")class C(B, A):passc= C()c.me() # prints class B
因此 , Python 中继承类的顺序很重要 , 因为它是用来解析方法的 。
总结Python 使用起来似乎非常简单 , 但是人们很容易被来自其他编程语言的概念所困扰 , 这就会导致奇怪的错误和崩溃 。 我希望本文所列举的错误能够帮助你厘清概念 , 从而写出健壮的 Python 代码 。
作者介绍:
Anupam Chugh , 视技术和代码为毕生追求 。 拥有 200 万阅读量的作家 , 现为 iOS 开发者 。
原文链接:
【Python 开发人员常犯的七大“致命”错误】关注我并转发此篇文章 , 私信我“领取资料” , 即可免费获得InfoQ价值4999元迷你书 , 点击文末「了解更多」 , 即可移步InfoQ官网 , 获取最新资讯~
- 黑莓(BB.US)盘前涨逾32%,将与亚马逊开发智能汽车数据平台|美股异动 | US
- 开发自|不妥协不追随 Member’s Mark升级背后的“山姆哲学”
- IPO|三旺通信IPO:产品结构相对单一业务规模较小 研发人员占员工总数33%
- 确认|三星确认正在开发“轻薄轻巧”的可折叠手机
- 推广|Josh Elman加盟苹果 负责开发者关系与软件推广工作
- 微信广告|小程序开发者看过来 流量变现倍增的秘籍来了!
- 移植|开发者将移植ARM Mac的Linux系统 但需要得到资金支持
- GNOME|[图]GNOME启动Circle项目:进一步扩大开发者规模
- 检查|填补软件开发市场空白,飞算全自动软件工程平台瞄准全自动后端微服务开发
- 格式化|利用好这3个隐藏技巧,Power BI 开发体验更丝滑