2015-11-04 89 views
2

我是新來的python,並面臨以下問題..我試圖從函數中獲得兩行使用return的文本,但仍然獲得「\ n」作爲文本(在IDLE 3.5)。所有工作正常,當我將「返回」更改爲「打印」,但我需要「返回」。Python從函數返回的新行

def myfunc(a): 
    text1=["|"] 
    i=int(a) 
    mystr="abc|"*i+"\n" 
    text1.append(mystr) 
    text1=''.join(text1) 
    b="0" 
    text2=[b] 
    for b in range(i): 
     b+=1 
     text2.append("{0:5d}".format(b)) 
    text1="".join((text1,"".join(text2))) 
    return(text1) 

結果:

>>> myfunc(4) 
'|abc|abc|abc|abc|\n0 1 2 3 4' 

(...) 
print(text1) 
>>> myfunc(4) 
abc|abc|abc|abc| 
0 1 2 3 4 
+1

我認爲你誤解了這是如何工作的。 'return'爲你提供字符串字面值。它*在兩行上(例如,如果你將它打印到文件對象或緩衝區等)。當在控制檯中顯示時,它沒有很好地「格式化」。 –

+2

試試'print(myfunc(4))'。 –

+1

這裏沒有問題。唯一的區別是,在一種情況下,該值被格式化爲語法上有效的Python文字,而在另一種情況下,它實際上被打印到屏幕上。 – deceze

回答

2

當進入一個返回交互解釋字符串的表達式,你將看到該字符串的表示。這與打印的不同,它將字符串本身的字符直接寫入終端。

該表示法通常會嘗試以Python將接受爲字符串文本的格式顯示字符串,即它被括在引號中,並且特殊字符會被轉義,就像您看到的\n一樣。