独学プログラマーP.60~ スコープについて。
ここについては、
グローバル変数とローカル変数を理解しよう! Python入門
が分かりやすかった。
関数の外で変数を決めるとグローバル変数となる。これはどこからでもアクセスできる。
関数の中で変数を決めるとローカル変数となる。この変数はその関数内だけで使える。
①グローバル変数は関数のなかでも使用できる。
a = 10
b = 20
def sum(x, y):
print("a:", a)
return x+ y
num = sum(a, b)
print("sum:", num)
print("a:", a)
結果:
a: 10
sum: 30
a: 10
…aは10のままで出力され、関数使用後も当然10のまま。
②次に関数のなかでa = 3としてみると、
a = 10
b = 20
def sum(x, y):
a = 3
print("a:", a)
return x+ y
num = sum(a, b)
print("sum:", num)
print("a:", a)
結果:
a: 3
sum: 30
a: 10
…関数のなかでだけaは3で、関数使用後は10のままとなる。つまり関数のなかでaという同じ名前のローカル変数を作ったことになる。
③関数のなかでaに1を加えようとしてみると、
a = 10
b = 20
def sum(x, y):
a += 1
print("a:", a)
return x+ y
num = sum(a, b)
print("sum:", num)
print("a:", a)
結果:エラーになる。
UnboundLocalError: local variable 'a' referenced before assignment
グローバル変数は関数内で参照はできるが操作はできないということ
④また、関数内でのみ使った変数を関数外で使用してみると、
a = 10
b = 20
def sum(x, y):
c = 100
print("a:", a)
return x+ y
num = sum(a, b)
print("sum:", num)
print("a:", a)
print("c", c)
結果:エラーになる。
NameError: name 'c' is not defined
ローカル変数は関数内でのみアクセスできる。
スコープ:scope
(行動・思考・知覚・調査などの)範囲、領域
<コンピュータ用語>宣言の場所により決定される変数やプロシージャの有効範囲。
登録:
コメントの投稿 (Atom)
python print
print_pythonnote print ¶ 言葉や数値を出力する ¶ In [ ]: print ( "...
-
独学プログラマー、Python1年生でPythonのプログラミングを始めたので、はじめはIDLEを使用していました。 その後はjupyter notebookを導入してメインで使っています。 jupyter notebookはAnacondaからセットで導入することが多いと...
-
各種方法で標準入力で複数行(文字列)を読み込んでリストへの格納を行ってみた。 入力の関数、メソッドとしては read、readline、readlines、input を使用する。 (read、readline、readlinesではsys.stdinを使う。はじめにs...
-
Python1年生 第5章 人工知能くんと遊んでみよう で、wheel形式のNumpyのインストールがうまくいかず、いろいろなサイトを参考にしてインストールに成功したのでその経緯などを書きとめます。同様の苦労をしている方に少しでも参考になれば幸いです。 私の構成:Python...
0 件のコメント:
コメントを投稿