0

print を使用すると機能しないのに、return を使用すると機能するのはなぜですか?

より大きな数値を出力したい:

def bigger(x,y):
    if x<y:
        return y
    return x

print bigger(2,7)

次のように出力されます。

7

def bigger(x,y):
    if x<y:
        print y
    print x

print bigger(2,7)

次のように出力されます。

7

なし

4

4 に答える 4

4

print を使用すると機能しないのに、return を使用すると機能するのはなぜですか?

できます。関数に return ステートメントがない場合、関数はNone. 2番目のケースでは、それを印刷するだけです。

于 2013-05-27T16:50:37.613 に答える
3

Python の組み込み maxを使用していない特定の理由はありますか?

None明示的な戻り値が指定されていない場合、関数は暗黙的に戻ります。したがって、2 番目の例では、何も返さない関数の結果を出力しています。関数自体はすでに結果を出力していますが。

あなたの最初のバージョンは正しいバージョンであり、何を使用する必要があります。

于 2013-05-27T16:51:46.883 に答える
3

最初のケースで表示されるデモは次のとおりです。

>>> def f1(): return 7
...
>>> print f1()
7

2 番目のケースで表示されるデモを次に示します。

>>> def f2(): pass
... 
>>> print f2()
None

最初の関数をより簡潔にしたい場合は、次の形式を使用します。

>>> def bigger(x,y):
...    return x if x>y else y
... 
>>> print bigger(2,7)
7

または、シーケンスの最大値を返すという利点がある (コメントに記載されているように) builin maxを使用するだけです。

>>> max([1,2,3,4,5,6,7])
7
>>> max('abcdefg')
'g'

または、タプルの 2 番目の整数のように、データ要素の最大要素のようなことを行います。

>>> max([(100,2),(50,7)], key=lambda x: x[1])
(50, 7)
于 2013-05-27T16:51:56.077 に答える
2

最初のケースでは、関数から値を返し、それを出力します。したがって、1 つの出力が得られます。2 番目のケースでは、関数内の値を出力してから、何も返さない関数からの出力を出力しようとします。したがって、最初に値を出力してから、空の戻り値を出力します。

于 2013-05-27T16:53:10.013 に答える