0

スクリプトの先頭に次の行があります。

global lotRow
global lotCol

その後、関数を使用して、lotRow と lotCol を文字列として設定します。その後、さらに後で、次のことを行います。

getIDFromAxes(int(lotRow), int(lotCol))

これは私に与えます:

    getIDFromAxes(str(lotRow), str(lotCol))
NameError: global name 'lotRow' is not defined

def() で最後に「ロット」文字列を出力して、それらが設定されていることを確認しましたが、何らかの理由でそれらにアクセスできません。

4

2 に答える 2

4

globalステートメントはスクリプトの先頭にはありません。それらは、グローバル変数へのアクセスが必要な関数の内部に入ります。そうではなく:

global x
x = 0

def increment_x():
    x += 1
    return x

以下を使用する必要があります。

x = 0

def increment_x():
    global x
    x += 1
    return x
于 2012-09-30T22:14:30.863 に答える
2

グローバル変数にアクセスしようとしている関数内でキーワードを使用する必要がありますglobal。そうしないと、もちろん存在しないローカル定義が検索されます。


global global_variable

def set_var ():
  global global_variable

  global_variable = 3

def print_var ():
  global global_variable

  print int(global_variable)

set_var   ()
print_var ()

global_variable = 321

print_var ()

出力:

3
321
于 2012-09-30T22:13:03.853 に答える