ここで船を揺さぶるつもりはありませんが、実際には上記の2つの答えに同意します. おそらくクラスが正しい方法であり、ほぼ確実に、ネイティブの print() 関数をオーバーライドするのは賢明ではありません。
Python の強みの 1 つは、あらゆる範囲のプログラミング パラダイムをカバーしていることです。直接的な手続き型の実装が必要です - Python! コードを再利用して、一般的で再利用可能なクラス (OOP と Python) を作成したい! Python では、関数型プログラミング (Python の組み込み関数) も可能であり、関数型プログラミングのmap
古典zip
的な例です。
これがこの質問で求められていることだと言っているわけではありませんが、機能的にこれを行うことができます:
def my_name_function(n):
return ' '.join(['This is my Name:', n])
def say_hello(x):
print('Hello, world!', x)
say_hello(my_name_function('Nick'))
--> Hello, world! This is my Name: Nick
繰り返しますが、これは質問が本当に求めていることではないと思います。この場合、最適な実装は OOP の意味でのクラスであることに同意します。(おそらく、より Pythonic な方法でも :p)
しかし、Python でネストされた関数の必要性がないと言うには、Python がこのオプションを私たちに開いたままにしておくと? 最近 (ここ数年) Python が関数型プログラミングの概念への扉を開いたのはいつですか? それには長所 (と短所) があります。もしそうでなければ、慈悲深い終身独裁者としてのグイドがこの箱を開けることはなかったでしょう。