1

私はPythonの学習を始めたばかりで、学習する練習のためにさまざまなコードを入力することをいじっていました。次のコードを作成しました。

import math
def lol():
    print (math.cos(math.pi))
    print ("I hope this works")

def print_twice(bruce):
    print bruce
    print bruce



print_twice(lol())    

実行すると、出力は次のようになります。

-1.0
I hope this works
None
None

関数 lol() を2回出力していないのはなぜですか?

4

3 に答える 3

7

あなたのコードprint_twice(lol())は、実行lol()してその戻り値を に渡すように言っていますprint_twice()。の戻り値を指定しなかったためlol()、 が返されますNone。したがって、 lol() は実行時に 1 回出力され、print の両方のprintステートメントでprint_twice()の値が渡されますNone

これはあなたが望むものです:

def lol():
    print (math.cos(math.pi))
    print ("I hope this works")

def print_twice(bruce):
    bruce()
    bruce()



print_twice(lol)

の戻り値を渡す代わりに、関数lol()を渡し、これを で 2 回実行します。 lolprint_twice()

于 2013-01-15T02:41:49.053 に答える
2

印刷は返却とは異なりますのでご注意ください。

あなたが呼び出すprint_twice(lol())と、最初に呼び出しlol()て出力-1.0I hope this works、 を返しNone、次に呼び出しを続け、2回print_twice(None)呼び出します。print None

于 2013-01-15T02:42:09.253 に答える
0

期待どおりに実行する方法:

def lol():
    print "lol"

def run_twice(func):
    func()
    func()

run_twice(lol)
于 2013-01-15T02:44:36.950 に答える