for循环如何能够使用尚未定义的变量

时间:2016-07-17 18:16:34

标签: python python-2.7 for-loop

我是编码的新手,我有点困惑。 for循环如何/为什么可以使用尚未定义的变量?

例如:

demond = {'green':'grass', 'red':'fire', 'yellow':'sun'}

for i in demond:
    print(i)

输出:

green
yellow
red

2 个答案:

答案 0 :(得分:0)

在python中,您不需要声明变量。在C / C ++ / JAVA等中,您必须先声明它们然后再使用它们。

变量只是存储值的保留内存位置。根据变量的数据类型,解释器分配内存并决定可以存储在保留内存中的内容.Python变量不需要显式声明来保留内存空间。为变量赋值时,声明会自动发生。

答案 1 :(得分:0)

您需要牢记两件事:

  1. 因为Python是一种弱类型语言,所以您不需要向某个对象类型显式声明任何变量。这是你已经知道的,以及为什么你可以分配东西而不必说明它们将是什么类型。

  2. 对于循环结构,在后台做很多事情,你没有明确地看到。这意味着虽然它并不像任何正在定义的那样,但它是。

  3. 考虑到这一点,我不想真正解释for循环是如何工作的,因为there are already answers available for that但主要的一点是python中的for循环与下面的伪代码相同。

    #set up your iterable
    demond = SOME_ITERABLE_OBJECT (this can be a list, string, dict, etc)
    
    #this
    for i in demond:
        do_something(i)
    
    #is the same as this
    i = demond[0] # the first item in demond
    do_something(i)
    i = demond[1] # the second item in demond
    do_something(i)
    i = demond[2] 
    ...
    ...
    ..
    i = demond[n] # the last item in demond
    do_something(i)
    

    现在您的后续问题可能就是这样:是什么让您在代码中for i in demond设置i等于它的密钥?那只是python设计的一部分,特别是dict的工作方式。 FOR循环实际上做的是调用迭代next() function直到可迭代生成器完成。每个iterable都可以有一个与for循环不同的结果(参见第一个链接)。

    注意: 在我的代码示例中,我正在设置i = demond[some_index]。这看起来像一个列表索引抓取,但它实际上只是表示以某种顺序迭代列表。这是PSUEDO代码。请记住这一点。