python的for函数 python中的for

为什么python for函数的第一个变量不用事先定义变量就可以用?听起来你之前应该有学习一些静态编程语言,比如C,所有会有些先入为主的理解 。
为什么“i”好像可以不用定义就能使用?这是语法规定 没什么好说 。
“i”的值从0开始?因为rang(5)会生成了一个类似[0,1,2,3,4]的序列,而for语句会迭代这个序列并把它的值依次赋给变量“i”,第一次赋值的时候就是0 。
至于“i”为什么是inti型,Python是动态类型语言并且它足够聪明 会自动推断合适的数据类型给变量,不用我们指定数据类型 。
关于for语句和range()函数的解释
Python 的 for 语句与 C 或 Pascal 中的不同 。Python 的 for 语句不迭代算术递增数值(如 Pascal),或是给予用户定义迭代步骤和暂停条件的能力(如 C) , 而是迭代列表或字符串等任意序列,元素的迭代顺序与在序列中出现的顺序一致 。
内置函数 range() 可以生成算术级数,生成的序列不包含给定的终止数值:
range(start, stop[, step])
start: 计数从 start 开始 。默认是从 0 开始 。例如range(5)等价于range(0,5);
stop: 计数到 stop 结束 , 但不包括 stop 。例如:range(0 ,  5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1 。例如:range(0, 5) 等价于 range(0, 5, 1)
python用for使每次输出多一个值首先来说下for循环,for循环是python语言的循环控制语句,for循环可以遍历任何序列的项目,包括序列集合或可迭代对象,如列表、字符串、元组、字典等 。
看下基本语法:
for 变量 in 序列:#变量为任意值,序列为列表、元组、字符串等
子代码模块
复制
比如我们想从一个列表中打印出来每个值,就可以用到for循环:
for i in (1,2,3,"test"):#遍历列表里的所有值,并把值赋值给变量 i
print(i)#输出结果为:123test
#每次只输出一个,因为for循环是遍历列表里的所有值,每遍历一次就输出一个值 , 然后遍历第二次,当遍历第二次时,变量i的值也会发生变化
复制
第一次循环:从列表中读取到 1  , 把1值赋值给变量 i ,然后进入到子代码中 , 此时 i 的值为 1,打印出 1,然后结束本次for循环,判断列表中还有其他值,开始第二次循环
第二次循环:从列表中读取到 2,把2值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 2,打印出2,然后结束本次for循环,判断列表中还有其他值,开始第三次循环
第三次循环:从列表中读取到 3 ,把3值赋值给变量 i,然后进入到子代码中,此时 i 的值变成了 3,打印出3,然后结束本次for循环,判断列表中还有其他值,开始第四次循环
第四次循环:从列表中读取到 test ,把test值赋值给变量 i,然后进入到子代码中 , 此时 i 的值变成了 "test",打印出 "test",判断列表中没有值了,结束本次遍历
最后输出的值为:1
2
3
test
如果我们把print(i)加到for循环外 , 此时打印的结果是什么呢?
for i in (1,2,3,"test"):#遍历列表里的所有值,并把值赋值给变量 i
print(i)#打印每次循环的值
print(i)#因为最后一次遍历的值为“test”,所以最后输出的值为 test
复制
最后按个print(i)输出的值为:test
输出的值为:1
2
3
test#上面是for循环每次遍历得到的结果
test#这个是for循环外,打印i得到的结果
如果我们遍历一个字符串是什么样子呢?
for i in ("Atom"):#遍历字符串里的所有值,并把值赋值给变量 i
print(i)#打印的结果为:A

推荐阅读