python中連續賦值遇到的問題

2021-08-14 23:46:55 字數 611 閱讀 2847

在學習生成器的時候做了乙個生成斐波那契數列的練習,下面是練習的**:

import sys

def fib(n):

a, b, count = 0, 1, 0

while 1:

if count >= n:

return

yield a

a, b, count = b, a + b, count+1

f = fib(10)

while 1:

try:

print(next(f))

except stopiteration:

sys.exit()

在進行連續賦值的時候產生了乙個疑問:

a, b, count =

b, a + b, count+1,如果先把b的值賦值給a的話,再對b賦值時a+b中a的值不就錯誤了嗎?

但是這麼寫是沒有問題的,每個變數的賦值是不會互相影響的。我是這樣理解連續賦值的過程的:生成三個臨時變數tmp1,tmp2,t***,另tmp1=b,tmp2=a+b,t***=count+1,最後再將臨時變數的值賦給先前的變數,結果為a=tmp1,b=tmp2,count=t***.

go和python變數賦值遇到的乙個問題

平時寫得多的是python,最近看了一點go,今天碰到了乙個問題,和大家分享一下 package main import fmt type student struct func pase student for stu range stus fmt.println m zhou name func...

反射給物件賦值遇到的問題 型別轉換

給乙個物件屬性賦值可以通過propertyinfo.setvalue 方式進行賦值,但要注意值的型別要與屬性保持一致。建立物件例項的兩種方法 1.1 var obj assembly.load assemblyname createinstance assemblyname classfullnam...

C 反射給物件賦值遇到的問題 型別轉換

給乙個物件屬性賦值可以通過propertyinfo.setvalue 方式進行賦值,但要注意值的型別要與屬性保持一致。建立物件例項 1 var obj assembly.load assemblyname createinstance assemblyname classfullname 2 var...