Python每次运行一个迭代的两个循环

Python每次运行一个迭代的两个循环,python,python-3.4,Python,Python 3.4,我正在使用Python args和kwargs进行一些实验,遇到了一个意想不到的问题。我的代码是: def argsandkwargs(*args,**kwargs): sum = 0 for arg in args: sum += arg print(sum) for i, j in kwargs.items(): print('i is ' + i + ' and j is ' + j) argsandkwargs(5

我正在使用Python args和kwargs进行一些实验,遇到了一个意想不到的问题。我的代码是:

def argsandkwargs(*args,**kwargs):
    sum = 0
    for arg in args:
        sum += arg
        print(sum)
    for i, j in kwargs.items():
        print('i is ' + i + ' and j is ' + j)

argsandkwargs(5,2,3,6,3,7,actor='RDJ',movie='Iron Man')
输出为:

5
i is movie and j is Iron Man
i is actor and j is RDJ
7
i is movie and j is Iron Man
i is actor and j is RDJ
10
i is movie and j is Iron Man
i is actor and j is RDJ
16
i is movie and j is Iron Man
i is actor and j is RDJ
19
i is movie and j is Iron Man
i is actor and j is RDJ
26
i is movie and j is Iron Man
i is actor and j is RDJ
如果args和kwargs循环是分开的,我希望看到:

5
7
10
16
19
26
5
i is movie and j is Iron Man
i is actor and j is RDJ
为什么python会以这种方式运行?它看起来像是从每个循环一次运行一个迭代,而不是在移动到下一个循环之前从每个循环运行所有迭代


再次检查您是否没有混合空格和制表符。Python认为第二个for循环缩进到与其上面的print语句相同的级别


谢谢@Kevin,第一个循环有空格,第二个循环有缩进;没有意识到这一点。

您确定缩进正确吗?请再次检查您没有混合空格和制表符。Python认为第二个for循环缩进到与上面的print语句相同的级别。是的,它运行得非常好。你的压痕掉了!这是空格与制表符缩进的对比。如果缩进等于4个空格,为什么空格会导致这样的问题?缩进等于4个空格只是编辑器的一个功能。Python2将制表符视为8个空格,Python3将为您提供一个混合制表符的错误。