2016-04-07 13 views
-1

2つ以上の値を返す方法があり、それを2行以上に分ける方法があるのだろうかと思います。私の現在のコード例:複数の値に複数の値を返す方法

def exampleReturn(): 
    x = 'Hello' 
    y = 'World' 
    return (x,y) #('Hello', 'World') 

現在、これはタプルでxとyを返します。しかし、私はこのような2行にこれらの2つの値を返す方法がある場合は疑問に思って:

exampleReturn() 
>>>'Hello' 
    'World' 

上記の例のように、それらが文字列の代わりにタプルとして別々の行になるために、私が希望し、両方の線が同じ位置で開始する。

+1

戻り値は表示とは関係ありません。印刷する場合は、印刷してください。 – poke

+0

あなたは何をしたいですか?戻り値をタプルにして別の方法で表示するか、戻り値を改行付きの文字列にしますか? – timgeb

+0

私の質問のあいまいさには申し訳ありません。ちょうどEditted。そして私はそれが改行で文字列になりたい。 – Yuxie

答えて

2

あなたは値がされている返すものの根本的な誤解があります。戻り値は、関数から返されるものです。文字列、整数、タプル、リスト、複雑なオブジェクトなど、あらゆる種類のオブジェクトにすることができます。それは問題ではありません。

通常、戻り値は表示されません。それらは変数の中に取り込むためのものです。

たとえば、str.split()は文字列を分割し、の部分のリストを返します。 Pythonスクリプトでこのように使うと、何も得られません。

'foo,bar'.split(',') 

戻り値はただ破棄されます。そして、このスクリプトからの視覚的出力は空になります。

戻り値で何かをするためには、あなたが変数でそれらをキャプチャするか、直接何か他のものにそれらを渡す必要があります。

x = 'foo,bar'.split(',') 

これはどのあなたはできる変数xで返されたリストをキャプチャします使用してください。

あなたは戻り値を表示したい場合、あなたはそれを印刷する必要があります。

x = 'foo,bar'.split(',') 
print(x) 

# or directly: 
print('foo,bar'.split(',')) 

値を返すことがすべてです。

対話型コンソールのREPLでは、より良いフィードバックを得るために、コンソールは通常、実行するものの戻り値を表示します(戻り値がNoneでない限り)。

>>> 'foo,bar'.split(',') 
['foo', 'bar'] 

['foo', 'bar']split呼び出しの戻り値であるので、それが自動的に表示されていないこと:対話的なPythonコンソールで、次のような出力を得る理由です。対話型コンソールは、それ以外の場合はスローされた戻り値をとり、それを表示します。しかし、これは完全に対話型コンソールの機能であり、私たちが影響を与えることはできません。私たちはそれにも頼ることができません。

あなたが特定の出力をしたい場合、あなたはそれを自分で印刷する必要があります:

>>> x = 'foo,bar'.split(',') 
>>> print('\n'.join(x)) 
foo 
bar 
+0

ありがとうあなたの洞察力のある答え。明らかにあなたが述べたように、私は本当に「返品」と「印刷」の違いを理解していませんでした。同様に、私はコンソールを使って試行錯誤していましたので、私は「捨て去った」戻り値についても誤解していました。 – Yuxie

1

タプル(データのみ)を返します。後で印刷書式を変更できるので、exampleReturn()で印刷書式設定を行うよりも優れた設計方法です。その後、別の場所で、単純に実行します。

print("\n".join(exampleReturn())) 

exampleReturn()もし戻っ番号ではなく、文字列を、ん:

print("\n".join([str(x) for x in exampleReturn()])) 
0

あなたが評価

  1. に対応する対話プロンプトでの出力を参照の2種類があり、どんなobj.__repr__()
  2. stdoutに印刷すると、obj.__str__()が返されます(print(obj)に電話したとき)

あなたが見ているものは、最初のものです。改行と表示させたい場合は、print()を心配してください。これを行うには多くの方法があります。 1つの可能性は、

In [453]: x = exampleReturn() 
In [454]: print(*x,sep="\n") 
hello 
world 
関連する問題