1

次の3つのファイルがあります。

フォルダ lib 内の次のファイル

ライブラリ/StringSplitting.py:

def type1():
    try:
        name1     = parts[1] 
        something = parts[2]
        x = 0
    except IndexError, e:
        x = None

    if x is None:
        print 'well something went wrong'

lib/__init__.py空いているものもあります。

次に、メインファイルがあります

testing.py

#!usr/bin/python

from lib import StringSplitting

data = "some random string separated by spaces "

global parts
parts = data.split(" ")

StringSplitting.type1()

print something

文字列を分離する方法は複数あるため、StringSplitting 内でさまざまな関数を使用する必要があります。

今、解決したいエラーは次のとおりです。

NameError: global name 'parts' is not defined
4

1 に答える 1

4

グローバルは、Python インタープリター全体ではなく、独自のモジュールに対してのみグローバルです。

parts代わりに、名前を関数パラメーターとして渡します。

StringSplitting.type1(parts)

ここで、type1()関数はパラメーターを受け入れるように再定義されています。

def type1(parts):

globalキーワードは、関数で使用された場合にのみ効果があることに注意してください。これは、関数内の名前がローカルではなくグローバルに割り当てられることを Python コンパイラに伝えます。モジュール レベルの名前は既にグローバルです。のglobal partstesting.pyはノーオペレーションであり、何もせず、完全に削除できます。

于 2013-08-31T08:41:38.883 に答える