有人可以向我解释第4行是做什么的吗?
1 def fib2(n): # return Fibonacci series up to n 2 ... """Return a list containing the Fibonacci series up to n.""" 3... result = [] 4... a, b = 0, 1 #this line 5... while a < n: 6... result.append(a) 7... a, b = b, a+b 8... return result
Willem Van O.. 10
你描述的是元组赋值:
a, b = 0, 1
相当于a = 0
和b = 1
.
但是,如果您想要交换值,它可能会产生有趣的效果.喜欢:
a,b = b,a
将首先构造一个元组(b,a)
,然后将其解包并将其分配给a
和b
.因此,这不等同于:
#not equal to a = b b = a
但是(使用临时):
t = a a = b b = t
通常,如果您在赋值运算符左侧有逗号分隔的变量列表,并且生成元组的表达式,则会将元组解压缩并存储在值中.所以:
t = (1,'a',None) a,b,c = t
将分配1
给a
,'a'
给b
和None
给c
.请注意,这不是语法糖:编译器不会查看左侧变量的数量是否与右侧元组的长度相同,因此您可以从函数等返回元组并将它们解压缩到单独的变量中.
你描述的是元组赋值:
a, b = 0, 1
相当于a = 0
和b = 1
.
但是,如果您想要交换值,它可能会产生有趣的效果.喜欢:
a,b = b,a
将首先构造一个元组(b,a)
,然后将其解包并将其分配给a
和b
.因此,这不等同于:
#not equal to a = b b = a
但是(使用临时):
t = a a = b b = t
通常,如果您在赋值运算符左侧有逗号分隔的变量列表,并且生成元组的表达式,则会将元组解压缩并存储在值中.所以:
t = (1,'a',None) a,b,c = t
将分配1
给a
,'a'
给b
和None
给c
.请注意,这不是语法糖:编译器不会查看左侧变量的数量是否与右侧元组的长度相同,因此您可以从函数等返回元组并将它们解压缩到单独的变量中.