2009-06-24 6 views
3

pythonシェルに戻ってきたオブジェクトを「返却」しないようにしたい。私は次のような場合は、今すぐ返す印刷オブジェクトからのPythonのreturn文を無効にする

def func1(): 
    list = [1,2,3,4,5] 
    print list 
    return list 

python -i test.py 
>>>func1() 

これはいつも私にPythonシェル上の2枚の印刷物を与える

例えばサンプルのPythonスクリプトtest.pyは次のようになります。 私は印刷して返されたオブジェクトを取得したいだけです。

答えて

6

Pythonシェルを設定して、関数呼び出しの戻り値を表示しないようにする方法はありません。しかし、返された値を変数に代入すると、それは印刷されません。あなたは

rv = func1() 

代わりの

func1() 

を言っている場合たとえば、何も印刷されないでしょう。

10

印刷の理由はreturn文ではなく、シェル自体です。シェルは、操作の結果であるオブジェクトをコマンドラインに出力します。

>>> a = 'hallo' 
>>> a 
'hallo' 

(それ以外に割り当てられていないので)、最後の文は、結果としての価値があります。この問題が発生した理由厥

。したがって、それはシェルによって印刷されます。

問題は「返す」ではなくシェル自体です。しかし、これは問題ではありません。なぜなら、作業コードnormalyは対話シェルで実行されないからです(したがって、何も印刷されません)。したがって、問題はありません。

+0

1:Pythonの混乱対「シェル」を出し矯正 –

5

一般に、関数内から印刷して値を返すのは良い考えではありません。

実際、関数内での印刷は、ほとんどの場合、間違ったことです。多くの場合、関数はプログラム内で何回か呼び出されます。場合によっては値を印刷したい場合があります。たいていは、そのデータを何かのために使用したいだけです。

関数が値を返すようにします。この関数を呼び出したコードで、それが正しいものであれば、それを印刷します。

0

あなたが変数に関数の結果を割り当て、その後、それが値を表示したくない場合は、次の

H:\test>copy con test.py 
def func1(): 
    list = [1,2,3,4,5] 
    print list 
    return list 
^Z 
     1 file(s) copied. 

H:\test>python -i test.py 
>>> func1() 
[1, 2, 3, 4, 5] 
[1, 2, 3, 4, 5] 
>>> x = func1() # assign result to a variable to suppress auto printout 
[1, 2, 3, 4, 5] 
>>> 
関連する問題