新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

Pythonは全てがオブジェクト、C#もそうだったと思います。違うか?

2021-09-05 10:01:48 | Python

 Pythonの教科書P131で、Pythonでは全てがオブジェクト。関数も変数に代入できるとあります。つまりfuncにはTasizan、Hikizanを代入できる。ということです。ちょっと驚きなのが、変数が文字列だったらどうなる?ですよね。Tasizanの場合は、文字列の連結で対処してくれました。Hikizanはどうなの?と思いたくなります。例えば”ABCDEF"から”CD"を取ったら、”ABEF"となります。

 単純に整数の引き算、100 - 50 の様には行きません。Hikizanそのものが使えません。C言語とかなら、多様性があったはずで、引数があっている関数を選んでくれたと思いますが、駄目だったと思います。関数の名前をMojiHikizanとして、よく知らない正規表現のreをimportしました。Tasizanの場合は、引数が整数でも小数点が付いていても、良いようです。

例を少し変えてみました。最後に文字列を一つにする方法ですが、もっとらしく書ける方法がありそうに思うんですが…。

文字列を一つにする部分を追加してみました。後のほうが変数を使わない分、スッキリですね。と思います。


コメント (2)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« デジノスGALLERIAは、Galleri... | トップ | Pythonの関数、Hikizanをイジ... »
最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Unknown (cametan_42)
2021-09-05 11:22:26
> 最後に文字列を一つにする方法ですが、もっとらしく書ける方法がありそうに思うんですが…。

def MojiHikizan(a, b):
 return ''.join(a.split(b))

でしょうね。
返信する
ディスパッチ (cametan_42)
2021-09-05 11:41:32
あと、単純に

def Hikizan(a, b):
 if isinstance(a, str) and isinstance(b, str):
  return ''.join(b.split(a))
 else:
  return a - b

と書けば良く、「多様性」とか関係ないですね。
引数の型判定で処理を振り分ければ良く、こういう型判定に従って処理を変える関数を通称「ディスパッチ関数」と呼びます。
ちなみに、実際は、Cの方がPythonより融通は利きません。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Python」カテゴリの最新記事