変数のスコープ
関数を書くとき、関数内で宣言された変数を使用することがあります。例えば、関数内で変数
name
が宣言されている場合、それは関数の外で宣言されたものとは全く別の新しい変数と見なされます。name = 'Helen'
def greet():
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Helen
変数
name
は greet()
関数内で宣言されており、そのスコープは関数の終わりまでです。特定のスコープ内で宣言された変数は、通常 ローカル変数 と呼ばれます。プログラムがその関数を抜けると、その変数の情報は「忘れられ」ます。現在のスコープの外にある変数にアクセスしてそれを変更するには、
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