1

次のように関数を変数に割り当てています。

def hello(name):
    print "Hello %r \n" % name

king = hello
print "%r, King of Geeks" % king("Arthur")

ターミナルでは、次のように返されます。

こんにちは「アーサー」
なし、オタクの王様

何を与える?

4

4 に答える 4

8

hello()何かを印刷していますが、Noneを返します。(明示的に何かを指定しない限り、すべての関数Noneはデフォルトで戻ります)return

>>> result = hello('test')
Hello 'test' 

>>> print result
None

テキストを印刷するのではなく、返すようhello()にすると、期待される結果が得られます。

def hello(name):
    return "Hello %r \n" % name

king = hello
print "%r, King of Geeks" % king("Arthur")

"Hello 'Arthur' \n"、King of Geeks

代わりにNew String Formattingを使用することをお勧めし%ます。

print "{}, King of Geeks".format(king("Arthur"))
于 2013-01-08T05:19:25.543 に答える
1

関数helloprint、文字列を返すのではなく、作成した文字列を ing しています。

次に、関数の呼び出しからの戻り値を別の文字列に置き換えようとします。

hello関数は何も返さないため、None代わりに効果的に返されるため、それが代入される理由です。関数内でprintを aに変更するだけで、期待どおりに機能します。returnhello

于 2013-01-08T05:21:47.647 に答える
0

これも機能します

def hello(name):
  print("hello, %s" % name)

king = hello
king("arthur")

出力

hello, arthur
于 2013-01-08T05:24:13.353 に答える
0

への呼び出しの結果king("Arthur")を出力しています。これはNone、値を返さないためです。

于 2013-01-08T05:22:33.740 に答える