今晚像往常一样打开Aptana写Python程序时,一个has_key调用报错了,代码如下:
代码如下 | 复制代码 |
info = {} 控制台: Traceback (most recent call last): |
说是字典对象没有has_key这个属性?一开始我以为是电脑神经了,多运行几次,还是报这个错误。看来电脑是没问题,在仔细读程序,一点问题都没有啊!后来想到会不会因为info没有成员才会报错?这不可能,但我还是往info里加了成员:
代码如下 | 复制代码 |
info = {"key":"key"} print(info.has_key("key")) ) |
结果还是一样提示字典对象没有has_key这个属性,于是我拿到命令行下运行,居然跑通了?
代码如下 | 复制代码 |
D:Python27>python.exe D:workspaceaptanatestmain.py True |
正严重郁闷中,难道Aptana中的PyDev出毛病了?但其他的语句比如if..else..while...def...class..import等都没有问题,为何偏偏就不能用has_key?最后我决定把Python的版本打印看看:
代码如下 | 复制代码 |
import sys |
控制台:
代码如下 | 复制代码 |
3.3.4 (v3.3.4:7ff62415e426, Feb 10 2014, 18:13:51) [MSC v.1600 64 bit (AMD64)] |
Python3版本,到cmd下打印Python版本:
代码如下 | 复制代码 |
D:Python27>python.exe -V |
Python2版本,难道说Python3版本移除了has_key这个我最经常用的函数?到官网一查,发现如下这段话:
Removed: apply(). Instead of apply(f, args) use f(*args).
Removed callable(). Instead of callable(f) you can use isinstance(f, collections.Callable). The operator.isCallable() function is also gone.
Removed coerce(). This function no longer serves a purpose now that classic classes are gone.
Removed execfile(). Instead of execfile(fn) use exec(open(fn).read()).
Removed the file type. Use open(). There are now several different kinds of streams that open can return in the io module.
Removed reduce(). Use functools.reduce() if you really need it; however, 99 percent of the time an explicit for loop is more readable.
Removed reload(). Use imp.reload().
Removed. dict.has_key() – use the in operator instead.
这真是中招了,还好没有浪费太多时间,没有把编辑器、系统重装,最后查看项目创建时使用的解释器果真是Python3版本:
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级