2

変数 a があり、次のように a に b を追加したい:

a = a + b

今、私は自分のプログラムを次のように設定しました:

a = 2
b = 3

def add() :
    a = a + b
    print(str(a))

add()

これを実行するたびに、

Traceback (most recent call last):
File "<stdin>", line 8, in <module>
File "<stdin>", line 5, in add
UnboundLocalError: local variable 'a' referenced before assignment

それ以外の

5

私が犯している明らかな間違いを説明してください。

4

2 に答える 2

1

それはscopeと呼ばれるものによるものです。あなたはそれについて読むことができますが、本質的には、関数の内部では、外部で定義されたものにアクセスできない可能性があることを意味します.

関数にこれらの変数を認識させるには、それらを渡す必要があります。これを試してください:

a = 2
b = 3

def add(x, y) :
    x = x + y
    print(str(x))

add(a, b)

これらの値は関数に渡されますが、実際には変更されていないことに注意してください。変数が functions に渡される方法に関する複雑さについては説明しませんがadd(a, b)、ここで呼び出した後でも、a と b の値はそれぞれ 2 と 3 のままであると言えば十分です。

于 2013-10-31T01:36:43.977 に答える
0

私はあなたがこのことを行う方法について学んでいると思います。あなたは本当にすべてをグローバルにしたいとは思っていません。さもなければ、大きな混乱に陥るでしょう.

ここで、abが関数に渡されます。関数内abはローカル変数であり、関数外で宣言したものとは異なります

a = 2
b = 3

def add(a, b) :
    a = a + b
    print(str(a))
    return a

a = add(a, b)

これreturn aは、関数がそのローカルを返すため、aそれで何かを行うことができます

于 2013-10-31T01:42:20.643 に答える