× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
![]() |
Pythonの変数のスコープについてなぜグローバル変数を用いるためにglobalをつける必要があるか考察してみた。 まず、C言語の関数から見てみよう int func() { int L; L = 23; printf("%d%s", L, G); //出力:"23bit" } C言語において、変数は「Use with definition」である。 次に、VBの関数を見てみよう。 Sub func L = 23 print L & G ’出力:"23bit" End Sub VBにおいて、Option Explicitをつけない場合、変数は「Use without definition」である。 いよいよPythonの関数を見てみよう def func(): L = 23 print L,G #出力:"23bit" Pythonにおいて、変数は「Use with definition. But writing is definition.」である。 実際に変数Gには何が設定されているのか知りたければGで検索すれば設定場所がひっかかる。 def func2(): global G G = "bit" global変数に値を設定する場合、ローカル変数の「値を設定して使う」というルールに参加させるため、globalキーワードを用いる。 なぜ、こんな仕様になったのか考えてみると、システム屋ではない人が作ってもPythonは整った文になるように設計されているということである。 さらに次のルールが生まれる。 とてもよく考えられているルールではないだろうか? PR |
![]() |
![]() |
|
![]() |
忍者ブログ [PR] |