Python函数,内部循环使用默认参数

时间:2016-07-28 09:52:02

标签: python python-2.7

for i in range(5):
   def test(i=i):
      print(i)

test()
test()
test()
test()
test()

每次打印4张?有人可以帮我理解这个。

3 个答案:

答案 0 :(得分:8)

您重新定义了test 4次:

同样如下:

#define test
def test(i = 0):
    print(i)

#redefine test
def test(i = 1):
    print(i)

#redefine test
def test(i = 2):
    print(i)

#redefine test
def test(i = 3):
    print(i)

#redefine test
def test(i = 4):
    print(i)

所以最后一个只有test()

答案 1 :(得分:3)

在循环的每次迭代中重新定义函数std::map<int, bool (*)(const Point&, const Point&)> std::multimap<RelationalOperator, bool (*)(const Point&, const Point&)> std::vector<std::pair<int, bool (*)(const Point&, const Point&)>>

当循环完成时,test只是:

test

答案 2 :(得分:3)

首先你的脚本完成for循环,在for循环结束时,i值为4

然后有多少次,你可以打电话给test(),它会打印4

我在代码中添加了一些打印件,以便您可以更好地理解流程

for i in range(5):
   print(i)
   def test(i=i):
      print("test")
      print(i)

test()
test()
test()
test()
test()

输出将是:

0
1
2
3
4
test
4
test
4
test
4
test
4
test
4