1

我正在尝试将针对 python 2.7 编写的代码反向移植到 python 2.6 中(原因是应该运行代码的服务器只有 python 2.6,并且管理员拒绝安装 python 2.7 或更高版本)。

一般来说,这工作得很好,但我发现了以下问题。在原始代码中的行(或类似的东西):

g = lambda x : ['{:d}'.format(i) for i in x]
g([1,2,3,4])

工作正常。但是,在 python 2.6 中,它们会产生错误。我在文档中找不到有关此主题的任何信息。

是什么原因?这个问题有没有简单的解决方案,即等效(相同语义)但使用不同语法的 lambda 表达式的定义?

4

2 回答 2

4

在 Python 2.6 中,字段名称是必需的(请参阅格式化字符串语法)。在 Python 2.7+ 中,可以省略

在 2.7 版更改:位置参数说明符可以省略,因此'{} {}'等效于'{0} {1}'.

因此,如果您希望您的代码与 Python 2.6 兼容,请按如下方式编写:

g = lambda x : ['{0:d}'.format(i) for i in x]
g([1,2,3,4])
于 2012-04-11T19:29:36.280 回答
0

在 2.6 中,str.format() 必须有一个位置说明符。

g = lambda x : ['{0:d}'.format(i) for i in x]
于 2012-04-11T19:27:09.250 回答