次のように関数を変数に割り当てています。
def hello(name):
print "Hello %r \n" % name
king = hello
print "%r, King of Geeks" % king("Arthur")
ターミナルでは、次のように返されます。
こんにちは「アーサー」
なし、オタクの王様
何を与える?
次のように関数を変数に割り当てています。
def hello(name):
print "Hello %r \n" % name
king = hello
print "%r, King of Geeks" % king("Arthur")
ターミナルでは、次のように返されます。
こんにちは「アーサー」
なし、オタクの王様
何を与える?
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"))
関数hello
はprint
、文字列を返すのではなく、作成した文字列を ing しています。
次に、関数の呼び出しからの戻り値を別の文字列に置き換えようとします。
hello
関数は何も返さないため、None
代わりに効果的に返されるため、それが代入される理由です。関数内でprint
を aに変更するだけで、期待どおりに機能します。return
hello
これも機能します
def hello(name):
print("hello, %s" % name)
king = hello
king("arthur")
出力
hello, arthur
への呼び出しの結果king("Arthur")
を出力しています。これはNone
、値を返さないためです。