1

我有以下 3 个文件:

文件夹 lib 中的以下文件

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哪个是空的。

然后我有主文件

测试.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 回答