2015-11-04 43 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一样。