我正在通过观看一系列教程来学习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。
答案 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
。