我是编码的新手,我有点困惑。 for
循环如何/为什么可以使用尚未定义的变量?
例如:
demond = {'green':'grass', 'red':'fire', 'yellow':'sun'}
for i in demond:
print(i)
输出:
green yellow red
答案 0 :(得分:0)
在python中,您不需要声明变量。在C / C ++ / JAVA等中,您必须先声明它们然后再使用它们。
变量只是存储值的保留内存位置。根据变量的数据类型,解释器分配内存并决定可以存储在保留内存中的内容.Python变量不需要显式声明来保留内存空间。为变量赋值时,声明会自动发生。
答案 1 :(得分:0)
您需要牢记两件事:
因为Python是一种弱类型语言,所以您不需要向某个对象类型显式声明任何变量。这是你已经知道的,以及为什么你可以分配东西而不必说明它们将是什么类型。
对于循环结构,在后台做很多事情,你没有明确地看到。这意味着虽然它并不像任何正在定义的那样,但它是。
考虑到这一点,我不想真正解释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代码。请记住这一点。