-1

変数と関数に問題があります。簡単なコードを次に示します。

r = 0
list = ['apple','lime','orange']
def list_list(x):
    for i in x:
        r +=1
        print r
list_list(list)

エラー:

UnboundLocalError: local variable 'r' referenced before assignment

私はそれが単純なものでなければならないことを知っています。ストレート コードではなく、関数を使用してスクリプトを作成し始めました。

4

3 に答える 3

3

r関数の外で定義したい場合は、関数を引数として受け取るように書き換える必要があります。

def my_func(some_list, r=0):
    # do some stuff

基本的に、スコープに問題があります。関数の外で r が必要な場合は、その値をタプルで返すだけです。

def my_func(some_list, r=0):
    # do some stuff

    return new_list, r

my_list = [1,2,3,4,5]
different_list, my_outside_r = my_func(some_list, 0)
于 2013-03-12T23:26:47.380 に答える
2

関数内のrは関数外の と同じではないため、まだ設定されていません。

于 2013-03-12T23:26:55.320 に答える
1

関数内に配置する必要がr = 0あります。しかし、リストの長さが必要な場合は、単に使用しますlen(list)

また、リストなどの組み込み名と同じ名前を変数に付けないようにしてください。

于 2013-03-12T23:26:28.570 に答える