変数のスコープ

関数を書くとき、関数内で宣言された変数を使用することがあります。例えば、関数内で変数 name が宣言されている場合、それは関数の外で宣言されたものとは全く別の新しい変数と見なされます。
name = 'Helen'
def greet():
    name = 'Bob'
    print('Hi', name)

greet()                  # Hi Bob
print('Outside:', name)  # Outside: Helen
変数 namegreet() 関数内で宣言されており、そのスコープは関数の終わりまでです。特定のスコープ内で宣言された変数は、通常 ローカル変数 と呼ばれます。プログラムがその関数を抜けると、その変数の情報は「忘れられ」ます。
現在のスコープの外にある変数にアクセスしてそれを変更するには、global キーワードを使用して、その変数をグローバルとして扱うようにPythonに伝えることができます。
name = 'Helen'
def greet():
    global name
    name = 'Bob'
    print('Hi', name)

greet()                  # Hi Bob
print('Outside:', name)  # Outside: Bob
この場合、greet() 関数はグローバル変数 name を変更し、その値を Bob に変えています。

チャレンジ

以下の関数における間違いを見つけて修正してみてください。この関数は、これまでに渡された値の合計を返すべきです。
total = 0

def compute_sum(val):
    total = total + val
    return val

print(compute_sum(10))
print(compute_sum(20))
print(compute_sum(30))
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue