自2.2.3版以来python发生了重大变化
作者:互联网
我写了一个小的python脚本来创建文件并计算时间.我在Fedora 10和Ubuntu 8.x上进行了测试,效果很好. python版本是2.5.x.
我试图在我的生产服务器(一个旧的基于red hat的Linux服务器)上运行它,python的版本是2.2.3.该脚本不起作用,并在类定义中引发语法错误.
该脚本定义了一个类,其方法是在磁盘上创建文件,测量时间,估计磁盘写入速度.它是这样开始的:
class TestDiskSpeed():
def __init__(self, rounds=1, speedMode=SPEED_MODE_MEGABYTE):
类定义被python 2.2.3指向为错误.
自2.2.3以来python中的主要变化是什么,可能会导致我的应用程序崩溃?我正在使用这些模块:os,sys,time,stat,gc.
更新:
通过从类定义中删除()python接受了该类.但它在这一行上引发了另一个错误:
size = long(size) if size != None else self._size
我是一名PHP开发人员,刚刚进入python编程(也许一个月),我非常习惯于在PHP中完成的三元操作,如下所示:
$var = (condition) ? $valueIfTrue : $valueIfFalse;
我搜索并发现它在python中完成,就像我用于我的size变量.虽然看来python 2.2.3不喜欢它.
我打算在这里插入所有代码(我将以LGPL的形式发布脚本),但代码超过150行(仍处于开发阶段).
解决方法:
这很奇怪,因为如果删除类定义中的(),它会编译.然而,documentation说空的parens没关系.
由于你使用了很多python 2.5功能,所以找到它们将是一项艰苦的工作.我建议阅读2.2和2.5之间的每个版本的“Python中的新功能”,然后提供一些您可能能够搜索到的功能列表,例如:
>理解和发电机
>三元表达
>装饰者
>新式课程
幸运的是,大多数新功能都带有一个新的语言关键字(或者使用关键字的新方式,对于三元x,如果是其他的话),所以对它们来说应该不难.
标签:python,changelog 来源: https://codeday.me/bug/20190717/1484996.html