蓝鸥西安

蓝鸥西安java培训 程序员好吗

发布用户:xalanou +收藏

发布时间:2018-03-14 09:29:50 已有46人浏览

 

我个人对陷阱的定义是这样的:代码看起来可以工作,但不是以你“想当然“”的方式。如果一段代码直接出错,抛出了异常,我不认为这是陷阱。比如,Python程序员应该都遇到过的“UnboundLocalError”


可能对于很多python新手来说,这个Error让人摸不着头脑。但我认为这不算陷阱,因为这段代码一定会报错,而不是默默的以错误的方式运行。不怕真小人,就怕伪君子。我认为缺陷就好比伪君子。

那么Python中哪些真正算得上陷阱呢?

第1:以mutable对象作为默认参数

这个估计是广为人知的了,Python和其他很多语言一样,提供了默认参数,默认参数确实是个好东西,可以让函数调用者忽略一些细节(比如GUI编程,Tkinter,QT),对于lambda表达式也非常有用。但是如果使用了可变对象作为默认参数,那么事情就不那么愉快了。

第二: x += y vs x = x + y

一般来说,二者是等价的,至少看起来是等价的(这也是陷阱的定义 — 看起来都OK,但不一定正确)。

第三,神奇的小括号–()

小括号(parenthese)在各种编程语言中都有广泛的应用,python中,小括号还能表示元组(tuple)这一数据类型, 元组是immutable的序列。

第四:生成一个元素是列表的列表

这个有点像二维数组,当然生成一个元素是字典的列表也是可以的,更通俗的说,生成一个元素是可变对象的序列

第五,在访问列表的时候,修改列表

列表(list)在python中使用非常广泛,当然经常会在访问列表的时候增加或者删除一些元素。

定义__del__

大多数计算机专业的同学可能都是先学的C、C++,构造、析构函数的概念应该都非常熟。于是,当切换到python的时候,自然也想知道有没有相应的函数。比如,在C++中非常有名的RAII,即通过构造、析构来管理资源(如内存、文件描述符)的声明周期。那在python中要达到同样的效果怎么做呢,即需要找到一个对象在销毁的时候一定会调用的函数,于是发现了__init__, __del__函数,可能简单写了两个例子发现确实也能工作。但事实上可能掉进了一个陷阱

蓝鸥科技西安中心,移动互联网科技育人专家,教育部产学合作协同育人项目承办企业,专注西安Java培训、西安大数据培训、西安unity培训,西安VR/AR培训、西安UI设计,西安HTML5培训、西安PHP培训,选择蓝鸥,不止高薪更是高起点!


上一篇:西安PHP开发培训学习教程视频

下一篇:蓝鸥西安java培训 编程语言的优势

QQ咨询

微信咨询