6

私はPythonを学び始めたばかりで、現在私に教えてくれる本を読んでいます。その本では、以下で作成したような関数が最初の関数で定義されている実際のテキストを出力しますが、スクリプトを実行すると <function two at 0x0000000002E54EA0>、出力として次のように表示されます。私は何を間違っていますか?間違った Python か何かをインストールしましたか? 3.3.0 バージョンをダウンロードしました

これが私のコードです:

def one():
    print ("lol")
    print ("dood")

def two():
    print (one)
    print (one)

print (two)
4

5 に答える 5

17

これはあなたが探している答えではありません…</p>

しかし、完全を期すために、関数自体のコードを出力したいとします。これは、コードが (REPL ではなく) ファイルから実行された場合にのみ機能します。

import inspect
code, line_no = inspect.getsourcelines(two)
print(''.join(code))

とはいえ、これを行う正当な理由はあまりありません。

于 2013-01-15T02:27:28.340 に答える
7

関数は既にテキストを出力しているため、関数を出力する必要はありません。それらを呼び出すだけです(括弧を忘れないでください)。

def one():
    print ("lol")
    print ("dood")

def two():
    one()
    one()

two()
于 2013-01-15T02:00:19.510 に答える
1

次の構文で関数を呼び出します

def two():
    one()
    one()

two()

括弧の中に入るのは、この本の後半で学習する入力パラメーターです。

于 2013-01-15T01:59:47.607 に答える
1

印刷は関数内で行われます。関数自体は、実行される一連のコードです。あなたの場合、このコードは印刷"lol""dood"れて画面に表示されます。このコードを実行するには、名前を入力するだけで関数を呼び出します。

def one():
   print("lol")
   print("dood")

def two():
   one() #simply type the function's name to execute its code
   one()

two()

関数自体を呼び出すprintと、関数が呼び出されたときに実行されるコードのメモリ内の場所が出力されるため、出力が文字化けします。

于 2013-01-15T02:07:11.080 に答える
-1

関数が出力すべきものではなく、関数自体を出力しています。おそらく、この方法で出力したかったのでしょう

def one():
    print ("lol")
    print ("dood")

def two():
    print one()
    print one()

print two()

出力は次のようになります: lol do

于 2013-01-15T02:04:44.000 に答える