Pythonは動的型、ダック型であり、強力でもあることを私は知っています。場合によっては、それらを使用するために、事前にリストまたは辞書として宣言されていることを確認する必要があります...それで、Pythonも静的に型付けされた言語であると言えますか?
2 に答える
いいえ、Python は静的に型付けされていません。
静的型付けでは名前は型とオブジェクト (または値) の両方にバインドされますが、Python では名前はオブジェクトにのみバインドされます。いつでも別の型のオブジェクトに名前を再割り当てできますが、これは静的に型付けされた言語ではできません。
事前に変数を宣言する必要があるとはどういう意味かわかりませんが、実際には空のリストまたは辞書を作成して名前に割り当てているだけだと思います。
次のコード行について考えてみます。
x = [] # (or {})
使用する前に「変数をリスト(またはdict)として宣言」しているのではありません。リスト([]
)(またはdict {}
)を作成し、それを変数()の値として割り当てますx
。x
これは、現在タイプがあるという意味ではありません。後で文字列をに割り当てることができますx
:
x = 'a string'
Pythonはこれに問題はありません。
初期化されていないスカラー変数をリストまたはハッシュへの参照であるかのように扱うことができるPerlの自動生存機能など、別の言語の機能に混乱しているのではないかと思います。Pythonにはそのような機能がないため、「動的」ではないと思いますか?実際にそのようなものを探している場合は、コレクションモジュールからdefaultdictクラスを調べてください。