3 回答

TA貢獻1864條經驗 獲得超6個贊
這似乎是元組的行為。打印元組時,__repr()__對每個元素進行打印調用。列表也是如此。
我試過這個:
tup = "xxx\nxx",
lst =["xxx\nxx"]
for t in tup,lst:
print('t :', t)
for s in t:
print('element:',s)
print(' repr:',s.__repr__())
print('---')
輸出是:
t : ('xxx\nxx',)
element: xxx
xx
repr: 'xxx\nxx'
---
t : ['xxx\nxx']
element: xxx
xx
repr: 'xxx\nxx'
---
因此,元組和列表的行為相同。
當我們有一個字符串時,調用__repr__()不會擴展\n字符,而是在它周圍加上引號:
s = "xxx\nxx"
print('s :', s)
print('s.__repr__():', s.__repr__())
輸出:
s : xxx
xx
s.__repr__(): 'xxx\nxx'
running.t、interjay和Daniel Roseman在評論中提到了這個元組行為,但沒有在答案中提到,這就是我發布這個答案的原因。

TA貢獻1830條經驗 獲得超3個贊
寫入return something,
與 相同return (something,)
:它返回一個包含一個元素的元組。當你print
這樣做時,它會顯示元組的外括號,里面的字符串將被打印為其源代碼表示,即帶有轉義碼和內引號。
但是,return something
只需返回該值,然后就可以正常打印該值。

TA貢獻1794條經驗 獲得超7個贊
這似乎是 Python 中元組的行為。你可以用一個更簡單的例子來測試這個:
>>> print ("xxx\n\nx",) ('xxx\n\nx',)
似乎 Python 可以幫助您調試并在打印時轉義字符串中的所有命令序列,以便字符串以與定義相同的方式出現。
不過,這確實讓你感到困惑,有趣的案例。:)
添加回答
舉報