2013-10-10 33 views
1

每當我使用print "in some_function. x: %s" % x調試一些python程序(通常是Python 2.5或Python 2.6)時,如果x是一個元組,我的程序崩潰。爲什麼?向我的代碼添加印刷品時如何避免這種情況?添加打印語句%崩潰我的程序?

回答

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)開始建造像(x,)。第一個是一個元素的元組,而第二個元素只是x

0

原因在於%右側的實際參數應該是一個元組,因爲左側的字符串可以有多個要填充的元素的佔位符。單個參數版本實際上是一個特例。所以,當你把你的x放在那裏,它實際上是一個元組,Python假定你提供了幾個參數來填充佔位符 - 只有沒有幾個佔位符,因此是例外。

(x,)修復它,因爲它現在使參數成爲一個包含單個元素的元組,它本身就是一個元組。