为什么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
答案 0 :(得分:0)
在代码示例中,您提供了定义列表i,然后迭代一个名为list的集合,您从未启动过,并将此列表中的值分配给i,从而删除原始值。我想您只提供了部分代码,请提供最低限度的工作示例。
如果我尝试重现你的问题,我只会得到一个类型错误,用于迭代未初始化的列表。