スコープについて①

独学プログラマー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
(行動・思考・知覚・調査などの)範囲、領域
<コンピュータ用語>宣言の場所により決定される変数やプロシージャの有効範囲。

0 件のコメント:

コメントを投稿

python print

print_pythonnote print ¶ 言葉や数値を出力する ¶ In [ ]: print ( "...