Pythonでもなんでも、プログラムを書くといろんな名前が出てきます。変数名や関数名、クラス名にモジュール名。
次のコードは、100
という数値に、number
という名前をつけます。
number = 100
print(number)
普通ですね。次のコードは、hoge
という名前の関数を作ります。
def hoge():
print('hello')
hoge()
変数の代入と関数の定義、書き方はちょっと違いますが、実はやっていることはどちらもあまり変わりません。数値の代入は、数値に名前をつけています。関数の定義は、関数に名前をつけています。どちらも、なにかに名前をつけているのです。
この考え方を覚えておいてください。Pythonの
number = 100
は、number
という名前の、値が100
の数値データを作っているのではありません。
値が 100
の数値データを作り、そのデータを利用できるように、number
という名前をつけているのです。データ自身には、名前はありません。
関数の定義も一緒です。
def hoge():
print('hello')
という定義は、hoge
という名前の関数を作るのではありません。新しい関数を作って、hoge
という名前で呼び出せるようにしているのです。
数値でも関数でも、あたらしい別の名前もつけられます。次の例は、数値にあたらしく suuchi
という名前をつけています。
suuchi = number
print("number is", number)
print("suuchi is also", suuchi)
関数にも、おなじように別の名前をつけられます。
fuga = hoge
fuga()
名前は上書きもできます。number
という名前を、'番号'
という文字列に置き換えてみましょう。
number = '番号'
print(number)
クラスの定義も、同じようにあたらしく名前を作ります。
class Foo:
def __init__(self):
pass
print(Foo())
このコードは、クラスを作成して、Foo
という名前をつけています。これも単に名前に過ぎませんから、別の名前をつけたり、上書きしたりできます。
Foo = "ふぅ"
print(Foo)
Pythonのプログラムには、変数の代入や関数の定義などがありますが、こういった処理では、あたらしく名前が作られます。
数字でも文字列でも関数でもクラスでもモジュールでも、名前はたんなる名前に過ぎません。代入文でも def
でもclass
でもimport
でも、作られる名前はみんな平等で、Pythonは一切区別をしません。
どうやって作った名前でも、同じように値を付け替えたり、別名を付けたりできるのです。
実用的には、数字と関数に同じ名前をつけてしまうのは、あまり上品なプログラマのやることではありません。しかし、
というのは、Pythonの動作を理解するために重要なポイントです。覚えておいてください。
Copyright © 2020 Atsuo Ishimoto
Powered by miyadaiku