2016-02-29 48 views
2

例如,我通过一本字典mydict迭代如下:Python如何知道变量的数据类型?

mydict = {"Name" : "Vincent Vega", 
      "Profession" : "Gangster", 
      "Age" : "42"} 

for k in mydict: 
    print k, mydict[k] 

现在,k仅仅是一个循环变量,我甚至没有申报。编译器如何知道,通过k,我的意思是字典的关键字?

回答

6

for声明在对象上使用特殊方法(__iter__next),这里是mydict

每一次迭代产生一个结果,存储在变量k

对于词典时,该__iter__方法返回字典的键。

更多信息here

1

for循环呼叫iter()上循环的序列,并且对结果使用next()调用。
不同的对象可以返回具有不同行为的不同迭代器,这就是为什么一次你会看到它遍历字典的键和另一次数组的索引,这取决于迭代。