我想知道在for循环中变量n的技术描述是什么。我想我的问题是关于命名法的。如果说它是一个临时命名的变量,在循环结束时被丢弃,这是否准确?我怀疑有一个规范的方法来引用它。谢谢!
for
n
yizd12fk1#
它是一个普通变量,恰好是赋值的目标,什么赋值,赋值由循环遍历的迭代器的__next__方法产生的值。每个for循环的形式为
__next__
for <var> in <iterable>: ...
可以被转换成等价的while循环。
while
_itr = iter(<iterable>) while True: try: <var> = next(_itr) # Here's the assignment except StopIteration: break ... del _itr
<var>在循环完成后不会被丢弃(临时变量_itr是,但它是for循环的一个真正的实现细节,Python代码从来都看不到)。与任何其他赋值一样,<var>在第一次被赋值时被定义,并且一直存在到定义它的作用域结束或使用del语句将其删除。
<var>
_itr
del
a7qyws3x2#
在本例中:
for n in [1,2,3]: print(n) print(n)
输出结果为:
1 2 3 3
也就是说,n是在for...行中创建的一个常规变量,在循环过程中,它获取序列中每一项的值。在for循环完成后,n变量仍然是它被赋值的最后一个值(即序列中的最后一个值,除非您提前退出for循环)
for...
2条答案
按热度按时间yizd12fk1#
它是一个普通变量,恰好是赋值的目标,什么赋值,赋值由循环遍历的迭代器的
__next__
方法产生的值。每个
for
循环的形式为可以被转换成等价的
while
循环。<var>
在循环完成后不会被丢弃(临时变量_itr
是,但它是for
循环的一个真正的实现细节,Python代码从来都看不到)。与任何其他赋值一样,
<var>
在第一次被赋值时被定义,并且一直存在到定义它的作用域结束或使用del
语句将其删除。a7qyws3x2#
在本例中:
输出结果为:
也就是说,
n
是在for...
行中创建的一个常规变量,在循环过程中,它获取序列中每一项的值。在for循环完成后,
n
变量仍然是它被赋值的最后一个值(即序列中的最后一个值,除非您提前退出for循环)