Pythonの質問です。
利用環境はPYcharmです。
Pythonの関数処理の勉強で下記コードを実行し、中身を確認しながら進めているのですが
#1のコードはreturnで値をget_first_last_wordに戻しているので、printした際に実行結果になる
ことはわかったのですが、#2を同じようにprintで中身を確認したら<function greeting.<locals>.inner at 0x000001E3959A9F30>
と表示されます。これはreturnでinner関数の値をgreeting(func)に戻しているからこの結果になるのでしょうか。
#2も#1と同じようにprintで出力すると同じような出力をすると思っていました。
教えていただきたいこと
1 <function greeting.<locals>.inner at が表示される理由
2 printでgreeting関数を表示させる際に引数に(func)を使うとエラーが起こる理由
独学ゆえに質問内容におかしなところがあるかもしれませんが
宜しくお願いします。
実行結果
#1
1 Hello, my name is Mike
2 Hello my name is Mike
3 ['Hello', 'my', 'name', 'is', 'Mike']
Hello Mike
1 Hello, my name is Mike
2 Hello my name is Mike
3 ['Hello', 'my', 'name', 'is', 'Mike']
('Hello', 'Mike')
#2
<function greeting.<locals>.inner at 0x000001E3959A9F30>
Hello!
I'm Jiro
Nice to meet you!
<function greeting.<locals>.inner at 0x000001E3959AA050>
コード #1 def get_first_last_word(text): print("1", text) text = text.replace(",", "") print("2", text) words = text.split() print("3", words) return words[0], words[-1] text = "Hello, my name is Mike" first,last = get_first_last_word(text) print(first, last) print(get_first_last_word(text)) #2 def greeting(func): def inner(*args, **kwargs): print("Hello!") func(*args, **kwargs) print("Nice to meet you!") return inner print(greeting("abc")) # a = greeting(func) # print(a) @greeting # say_name = greeting(say_name)と同じ def say_name(name): print(f"I'm {name}") say_name("Jiro") print(greeting("abc"))
回答3件
あなたの回答
tips
プレビュー