为什么这是有效的Python?

时间:2016-04-27 17:48:54

标签: python

此代码:

bounding_box = (
    -122.43687629699707, 37.743774801147126
    -122.3822021484375, 37.80123932755579
)

产生以下值:

(-122.43687629699707, -84.63842734729037, 37.80123932755579)

有三个值,因为我忘记了第一行的尾随逗号。令人惊讶的是,Python接受了这一点并将第二个和第三个数字加在一起!

这是string literal concatenation,但对于数字?为什么这会成为理想的行为?

3 个答案:

答案 0 :(得分:10)

发生的事情很简单。在以下作业中

bounding_box = (
    -122.43687629699707, 37.743774801147126
    -122.3822021484375, 37.80123932755579
)

相当于

bounding_box = (-122.43687629699707, **37.743774801147126-122.3822021484375**, 37.80123932755579)

因此,这两个值正在被减去,因此产生一个3元组。

答案 1 :(得分:3)

没有换行符,为了清晰起见,请删除小数:

bounding_box = (-122, 37 - 122, 37 )

换句话说,本来应该是逗号然后是一元减号被解析为减法运算符。

答案 2 :(得分:0)

你有换行符,但没有新的缩进。它不会抛出错误,因为没有缩进问题,并且在进行减法时甚至不会确认换行符。

如果您尝试将所有文​​字保留在窗口内,该怎么办?值之间的分隔符是逗号,而不是换行符。这就是为什么这是理想的行为。