Python中的NameError和ValueError

时间:2015-07-17 22:35:44

标签: python-3.x

为什么python shell会抛出一个NameError,因为windows控制台会出现一个ValueError?

def PrintArgs(*arg):
    list = ['1','2']
    for i in arg:
        try:
            print(list[int(i)])
        except ValueError:
            print('Please enter integer value')
        except NameError:
            print('Name Error')

if __name__ == '__main__':
    PrintArgs(*sys.argv[1:])

向Windows控制台提供以下参数将提供此输出:

以下是我在windows控制台中调用代码的方法:

C:\>C:\Python34\python C:\Users\User\Documents\PYTest\Test.py 0 a

1
Please enter integer value

向Python Shell提供以下参数不会显示上面代码中提到的NameError的cusom错误,但会提到以下错误:

PrintArgs(0,a)

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
PrintArgs(0,a)
NameError: name 'a' is not defined

1 个答案:

答案 0 :(得分:0)

在代码示例中,您提供了定义列表i,然后迭代一个名为list的集合,您从未启动过,并将此列表中的值分配给i,从而删除原始值。我想您只提供了部分代码,请提供最低限度的工作示例。

如果我尝试重现你的问题,我只会得到一个类型错误,用于迭代未初始化的列表。