1

每次我print "in some_function. x: %s" % x用来调试一些 python 程序(通常是 Python 2.5 或 Python 2.6)时,如果x是一个元组,我的程序就会崩溃。为什么?在我的代码中添加打印时如何避免这种情况?

4

2 回答 2

2

问题是当x是一个元组时,Python 假定元组的元素是格式化字符串的参数。例如,如果我这样做

>>> "one: %s two: %s" % ('fish','chips')
'one: fish two: chips'

如果您希望 Python 替换整个元组,请将参数作为具有一个元素的元组传递给字符串:

>>> "This is a tuple: %s" % (('fish','chips'),)
"This is a tuple: ('fish', 'chips')"

末尾的逗号区分了一个像(x,)from的结构(x)。第一个是带有一个元素的元组,而第二个是简单的x.

于 2013-10-10T19:14:38.927 回答
0

原因是右边的实际参数%应该是一个元组,因为左边的字符串可以有多个占位符来填充元组的元素。单参数版本实际上是一个特例。因此,当您将 your 放置在x那里并且它实际上是一个元组时,Python 假设您提供了几个参数来填充占位符 - 只有没有几个占位符,因此是例外。

Putting(x,)修复了它,因为现在这使参数成为包含单个元素的元组,该元素本身就是一个元组。

于 2013-10-10T19:14:30.757 回答