Python 3 - 使用for循环打印* args时出错

时间:2013-03-25 18:08:18

标签: python python-3.x

我正在通过观看一系列教程来学习python 3 在其中一个关于可选函数参数(*args)的视频中,教师使用for循环来打印传递给函数(元组)的可选参数。

当我尝试运行教师的脚本时,出现错误:


教师的剧本:

def test(a,b,c,*args):  
    print (a,b,c)  
for n in args:  
    print(n, end=' ')  

test('aa','bb','cc',1,2,3,4)  

输出:

C:\Python33\python.exe C:/untitled/0506.py  
Traceback (most recent call last):  
  File "C:/untitled/0506.py", line 4, in <module>  
    for n in args: print(n, end=' ')  
NameError: name 'args' is not defined  

Process finished with exit code 1  

def test(a,b,c,*args):  
    print (a,b,c)  
    print (args)  

test('aa','bb','cc',1,2,3,4)  

输出:

aa bb cc  
(1, 2, 3, 4)  
Process finished with exit code 0  

导致错误的原因是什么? P.S:我正在使用Python 3.3.0。

1 个答案:

答案 0 :(得分:2)

你的缩进错了:

def test(a,b,c,*args):  
    print (a,b,c)  
    for n in args:  
        print(n, end=' ')  

test('aa','bb','cc',1,2,3,4)  

缩进在Python中很重要;您的版本声明for n in args:函数外的test()循环 ,因此它立即运行。由于args仅是test()的局部变量,因此不会在函数外定义,而是NameError