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