私の質問は、関数出力の代わりに None が印刷される理由と、関数出力がその位置の前に取得される理由です。
def print_spam():
print('spam')
def do_twice(r,ps):
g = ps()
print(r,'is a',g)
print(r,'is a',ps())
do_twice('xyz',print_spam)
出力は
spam
xyz is a None
spam
xyz is a None
関数は何もprint_spam()
しませんreturn
。それはただprint
の声明です。
次のように変更します。
def print_spam():
print('spam')
return 'spam'
関数は何も返さないため、デフォルトはNone
です。関数の出力を に代入するg
と、返された関数の文字列 ( spam
) が含まれます。
交換を検討
g = ps()
print(r,'is a',g)
と
g = ps
print r,'is a',
g()
とにかく、他の回答で指摘されているように、print_spam() は None を返します